艺术家的全文搜索工作不是标题

时间:2013-08-19 02:16:22

标签: mysql full-text-search match

我遇到全文搜索问题。 我有两张桌子:

歌曲

+------------+-----------------------+------------+-----------+
| id_canzone | canzone               | id_artista | canzone   |
+------------+-----------------------+------------+-----------+
|        107 | Can U Believe         |         15 | I'm Sorry |
+------------+-----------------------+------------+-----------+

艺术家

+------------+---------+
| id_artista | artista |
+------------+---------+
|         15 | Akon    |
+------------+---------+

如果我搜索艺术家的全文搜索,我没有遇到任何问题。

SELECT *,MATCH(artista) AGAINST('Akon Can U Believe.' ) FROM artists

+------------+---------+------------------------------------------------+
| id_artista | artista | MATCH(artista) AGAINST('Akon Can U Believe.' ) |
+------------+---------+------------------------------------------------+
|         15 | Akon    |                             1.9237866401672363 |
+------------+---------+------------------------------------------------+

但是当我尝试使用歌曲表时

SELECT id_canzone,canzone,MATCH(canzone) AGAINST('Akon Can U Believe.' ) FROM songs

+------------+---------------+------------------------------------------------+
| id_canzone | canzone       | MATCH(canzone) AGAINST('Akon Can U Believe.' ) |
+------------+---------------+------------------------------------------------+
|        104 | Can U Believe |                                              0 |
+------------+---------------+------------------------------------------------+

我减小了ft min word len参数,尝试重建索引。什么都没有改变。

1 个答案:

答案 0 :(得分:1)

检查Mysql stopword list

“Can”和“Believe”都是停用词而“U”太短,所以你的比赛将返回0。

如果您想使用全文搜索音乐标题,则必须修改停用词列表或完全禁用它。

有关如何操作的信息,请参阅fulltext fine tuning

测试全文时,请确保表中有足够的行。 尽管使用了停用词自定义设置,但超过50%行中出现的单词仍被视为停用词。