環境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 作爲每條記錄的相似度百分比。