布尔搜索忽略单词

时间:2010-11-13 17:58:40

标签: mysql boolean

我一直在做很多成功的布尔搜索,但是1个字似乎阻止它显示预期的结果。

下面您可以看到顶部的表格结构,特别注意此测试产品的标签内容。

alt text

文字中的代码包含截图太小:

SELECT 
        id,
        name,
        description,
        price,
        image 
    FROM 
        products 
    WHERE           
        MATCH(tags,name,description)
        AGAINST ('hot*' IN BOOLEAN MODE)

如果我搜索其中一个标签的“hot”,它会返回0个结果。

但是,如果我搜索“饮料”这是另一个标签,它会找到产品!

我似乎无法理解为什么!

2 个答案:

答案 0 :(得分:4)

  

如果我搜索其中一个标签的“hot”,它会返回0个结果。

默认情况下,MySQL不会对长度小于4个字词的单词进行索引(和搜索)。

如果要索引它们并重建索引,请减少@@ft_min_word_len

答案 1 :(得分:0)

确保“hot”不是stop word(它不是默认的停用词,但也许你的mysql实现由于某种原因而存在?)并且“热”并不是一个单词( default ft_min_word_len为4,因此将忽略少于4个字母的字词,除非它们与截断*运算符匹配,因此虽然hot会被忽略,但hott不会,请参阅:{{3} })