调整MySQL的ngram全文索引

时间:2018-02-12 02:45:51

标签: mysql full-text-search

如果我将术语Maya AngelouMay Angelou(使用MySQL的ngram全文索引解析器)编入索引,然后搜索术语may,则这两个项目的得分完全相同。有没有办法优化它,以便May Angelou首先出现?

请参阅:

CREATE TABLE test(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200)
);

ALTER TABLE test ADD FULLTEXT INDEX `test_fulltext_index`(title) WITH PARSER ngram;

insert into test(title) values('Maya Angelou');
insert into test(title) values('May Angelou');


SELECT title, MATCH(title) AGAINST ('may') as SCORE FROM test WHERE MATCH(title) AGAINST ('may');

这导致:

+--------------+----------------------------+
| title        | SCORE                      |
+--------------+----------------------------+
| Maya Angelou | 0.000000003771856604828372 |
| May Angelou  | 0.000000003771856604828372 |
+--------------+----------------------------+

当然,使用普通的FULLTEXT索引(没有ngram解析器)会给出以下内容:

+-------------+--------------------+
| title       | SCORE              |
+-------------+--------------------+
| May Angelou | 0.0906190574169159 |
+-------------+--------------------+

我想过有两个索引:一个是普通FULLTEXT索引,另一个是WITH PARSER ngram,然后合并结果,但这似乎不可能。

怎么可以这样做?

0 个答案:

没有答案