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

 

你可能感兴趣的:(MySQL,mysql,fulltext,match-against,score)