环境Mysql8 支持fulltext全文索引的引擎为InnoDB MyISAM. 支持char varchar text类型的字段作为全文索引。
CREATE TABLE test_text (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
info VARCHAR(2000),
FULLTEXT (info)
) ENGINE=InnoDB;
INSERT INTO test_text (info) VALUES
('3453232453,3453424356,2341234,234231534,2154234'),
('123544345,3452345,32452,654643'),
('453,24352354,3454,3452,345346,4564,3435');
SELECT id, MATCH (info) AGAINST ('3453232453,3452345,2341234,234231534,2154234' IN NATURAL LANGUAGE MODE) AS score FROM test_text order by score desc;
通过修改需要匹配的文本内容可以发现根据内容不同,score的取值并非0-1或者0-100
在Mysql中通过MATCH(col1,col2..) AGAINST(expr..)语法得到的值并不能直接作为匹配相似度百分比来使用,该语句得到的score值与数据总量、文本值、分词符、匹配关键字长度等因素相关,score值越大代表匹配度越高,但是并不是匹配的相似度百分比。
如果需要计算匹配度百分比,需要对所有score值求和,然后取 每条记录的score/sum(score) * 100 作为每条记录的相似度百分比。