Mysql Fulltext 全文索引 score值 含義及取值

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

 

參:mysql8match-against

       fulltext-score-explained

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章