如果我将术语Maya Angelou
和May 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
,然后合并结果,但这似乎不可能。
怎么可以这样做?