【问题标题】:Mysql Select Query with match and against issueMysql Select Query with match and against issue
【发布时间】:2013-01-11 07:26:51
【问题描述】:

这是我执行搜索的代码

 SELECT d.deal_id,
    d.deal_title,
    d.friendly_url
    FROM wp_deals AS d
   WHERE MATCH (d.deal_title) AGAINST ('Historic China eight day tour' IN BOOLEAN MODE)
   GROUP BY d.deal_id

它工作正常。并给出 14 个结果。 其中之一是

大桑迪海峡两晚自然邂逅之旅,包括日落巡游等。最高减 $1,071!

但是当我搜索“with”或“more”时,它变成了

SELECT d.deal_id,
   d.deal_title,
   d.friendly_url
 FROM wp_deals AS d
WHERE MATCH (d.deal_title) AGAINST ('more' IN BOOLEAN MODE)
GROUP BY d.deal_id


 SELECT d.deal_id,
   d.deal_title,
   d.friendly_url
   FROM wp_deals AS d
   WHERE MATCH (d.deal_title) AGAINST ('with' IN BOOLEAN MODE)
   GROUP BY d.deal_id

and 没有给出任何结果,尽管 with 和 more 两者都是它们的。我不是这类搜索查询的专家。

但是

当我搜索“旅游”时,这也是他们的,它工作正常。他们发生了什么。 不能理解为“tour”、“with”和“more”都包含四个字母以及它们的标题。

你们是天才..

你的建议,所以它会锻炼。

提前致谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在布尔全文搜索中,停用词列表适用,常用词(例如“some”或“then”...)是停用词,如果出现在搜索字符串中,则不匹配:http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html

    停用词列表:http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html

    最著名的解决方案是禁用列表或从中添加/删除值:How to reset stop words in MYSQL?

    还有:

    SELECT d.deal_id,
       d.deal_title,
       d.friendly_url
    FROM 
       wp_deals AS d
    WHERE MATCH (d.deal_title) AGAINST ('+more*' IN BOOLEAN MODE)
    GROUP BY d.deal_id
    

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 2012-05-22
      • 2012-03-15
      • 2011-11-10
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      相关资源
      最近更新 更多