Mysql 布尔搜索忽略词

Mysql 布尔搜索忽略词,mysql,boolean,Mysql,Boolean,我已经做了很多成功的布尔搜索,但是一个单词似乎阻止了它显示预期的结果 在下面,您可以看到顶部的表格结构,特别注意此测试产品的标签内容 如果屏幕截图太小,则以文本形式显示代码: SELECT id, name, description, price, image FROM products WHERE MATCH(tags,name,des

我已经做了很多成功的布尔搜索,但是一个单词似乎阻止了它显示预期的结果

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

如果屏幕截图太小,则以文本形式显示代码:

SELECT 
        id,
        name,
        description,
        price,
        image 
    FROM 
        products 
    WHERE           
        MATCH(tags,name,description)
        AGAINST ('hot*' IN BOOLEAN MODE)
如果我搜索其中一个标记“hot”,它将返回0个结果

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

我似乎不明白为什么

如果我搜索其中一个标记“hot”,它将返回0个结果

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

如果要为它们编制索引并重建索引,请减小

如果我搜索其中一个标记“hot”,它将返回0个结果

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


如果要为它们编制索引并重新生成索引,请减少该值。

确保“hot”不是一个单词(它不是默认的停止词,但可能您的mysql实现出于某种原因而使用了它?),并且“hot”不是一个太短的单词(ft_min_word_len是4,因此小于4个字母的单词将被忽略,除非它们与截断操作符匹配,所以虽然hot将被忽略,但hott不会,请参见:)

确保“hot”不是一个(它不是默认的停止词,但可能您的mysql实现出于某种原因而具有它)和“hot”一个单词不太短(ft_min_word_len为4,因此小于4个字母的单词将被忽略,除非它们与截断
*
运算符匹配,因此虽然hot将被忽略,但hott不会,请参见:)

另外,要在您的环境中测试这一点,请在搜索词中添加“bite”,然后重试(“bite”作为一个四个字母的单词,还有“粉色”、“蓝色”等;]……但这样你可以向自己证明这就是问题所在。)@在阅读我的想法之后,我的第二个评论是@Quassnoi~这是否适用于MSSQL、ORA或Postgresql?@drachenstern:不,这是
MySQL
指定的限制,并且只存在于默认设置中。@drachenstern:然而,几乎所有的全文引擎都支持stopwords、分词器和词干分析器,它们可以不明显的错误点击/未点击广告。该死的,我的主机不会改变这个值:(顺便说一句,@AlexCrooks要在你的环境中测试这一点,请在搜索词中添加“咬”,然后再试一次(“咬”是一个四个字母的词,还有“粉色”、“蓝色”等;)……但这样你可以向自己证明这就是问题所在。)@在阅读我的想法之后,我的第二个评论是@Quassnoi~这是否适用于MSSQL、ORA或Postgresql?@drachenstern:不,这是
MySQL
指定的限制,并且只存在于默认设置中。@drachenstern:然而,几乎所有的全文引擎都支持stopwords、分词器和词干分析器,它们可以非明显错误点击/未点击广告。该死,我的主机不会更改该值:(