全文搜索领先加上无法正常工作

时间:2015-04-02 08:42:52

标签: mysql

我在与功能的比赛中遇到了麻烦。当我运行以下查询时:

    SELECT 
        i.name,
        n.trad,
        i.icon_name,
        i.quality
    FROM strings_item AS n
        LEFT JOIN items AS i ON n.name = i.description
    WHERE match(n.body_en) against ('+cat*+queen*' IN BOOLEAN MODE)

返回包含cat OR queen的行。 Isn&#t; t +应该返回包含两个单词的行吗?

编辑:

以下是它返回的一些数据示例:

Cataclysm's Jaws
Catalium
Catalium Rod
Grand Master's Gleaming Catalium Dagger

似乎它永远不会与女王一起回归。所以,我试图将匹配的单词更改为' + cat + queen'以下是它的显示内容:

Iceheart Queen's Shield
Queen Klaw's Pauldrons
[Playing Card] Queen of Hearts
Cat Queen Egg
Cat Queen Box

PS:我保留这些单词与mysql中的顺序相同,而我要寻找的行是Cat Queen Egg

1 个答案:

答案 0 :(得分:0)

您的查询是正确的。您的数据库没有包含cat*queen*的行。

默认情况下,ft_min_word_len在sql中的值为4。 (https://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_ft_min_word_len)。

因此,sql不会在其全文索引中使用少于4个字符的单词。

例如:

Instructions      1
are               2
applicable        3
to                4
these             5
Adventure         6

在这一行中,sql不会在其全文索引中使用单词2,3和4。

更改ft_min_word_len或添加包含超过4个字符且包含cat的字词的行。

只需在此处添加,您就可以找到在全文索引中也被忽略的stop words列表。 http://mssqltipsandtricks.blogspot.de/2012/07/noisestop-words-in-sql-server.html