MYsql FULLTEXT 查询产生意外的排名;为什么?

2024-01-11

i'm trying fulltext search with tags but it doesn't works properly for me chek attached image pleaseenter image description here

查询是:

 SELECT *, 
         MATCH(tags) AGAINST ('tag3 tag6 tag4') AS score 
    FROM items
ORDER BY score DESC

为什么分数没有在正确的顺序字段中排序?如果您检查第二行是否包含我搜索的所有标签,而第一个字段没有 tag3 关键字。

我的意思是 id 字段顺序应该是:5,1,2 .. 等而不是 1,5,2 .. 等

我的错误在哪里?

然后我想首先在标签字段中搜索,然后如果没有结果,我想在描述字段中搜索与全文相同的关键字,因此如果标签不匹配,用户将在标签和描述中搜索,是否可以在同一查询中或者我需要两个单独的查询?


在本文档中http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html它说“对于非常小的表格,单词分布不能充分反映它们的语义价值,并且该模型有时可能会产生奇怪的结果。”

如果您的项目表很小(例如示例表),您可能会遇到此问题并得到“奇怪”的结果。

您可能想尝试这个查询IN BOOLEAN MODE看看您的结果是否符合您的预测。尝试这个。

    SELECT *, 
           MATCH(tags) AGAINST ('tag3 tag6 tag4' IN BOOLEAN MODE) AS score 
      FROM items
  ORDER BY score DESC

布尔模式禁用单词分布排名。请注意,您应该了解自然语言模式和布尔模式之间的区别,并且一旦您拥有一张大小合适的表格,就可以明智地选择使用哪一种模式。如果您正在搜索博客中包含的标签类型,布尔值可能是最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYsql FULLTEXT 查询产生意外的排名;为什么? 的相关文章

随机推荐