【问题标题】:mysql fulltext MATCH,AGAINST returning 0 resultsmysql 全文 MATCH,AGAINST 返回 0 个结果
【发布时间】:2014-01-21 06:25:22
【问题描述】:

我正在尝试关注:http://dev.mysql.com/doc/refman/4.1/en/fulltext-natural-language.html

试图提高搜索查询的速度和按分数排序的能力。

但是,当使用此 SQL 时(“skitt”用作搜索词,以便我可以尝试匹配 Skittles)。

SELECT 
    id,name,description,price,image, 
    MATCH (name,description) 
    AGAINST ('skitt') 
    AS score 
FROM 
    products 
WHERE 
    MATCH (name,description)
AGAINST ('skitt')

它返回 0 个结果。 我试图找出原因,我想我可能设置了我的索引错误我不确定,这是我第一次偏离喜欢!

这是我的表结构和数据:

谢谢!

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    默认情况下,某些词会从搜索中排除。这些被称为stopwords。 “a”是停用词的一个例子。您可以使用不是停用词的词来测试您的查询,也可以禁用停用词:

    如果您还想匹配前缀,请使用truncation operator in boolean mode:

    *

    星号用作截断(或通配符)运算符。与其他运算符不同,它应该附加到要受影响的单词上。如果单词以 * 运算符之前的单词开头,则单词匹配。

    【讨论】:

    • 即使我将“a”替换为“skitt”(以匹配 Skittles)它仍然返回 0
    • @Alex Crooks:你为什么希望“skitt”匹配“Skittles”?这不是同一个词。
    • 啊,好吧,所以我是一个完全的白痴,我认为它也进行了部分单词匹配,如果我将其更改为“skittles”它会起作用,这就是我想要的无论如何我猜。谢谢你,很抱歉浪费你的时间:)
    • @Alex Crooks:我添加了一些关于截断运算符的信息,您可能会觉得有趣。
    • 谢谢你,*布尔模式在我原来的问题中效果很好,非常感谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多