【问题标题】:Full text search with partially quoted string (mysql)使用部分引用的字符串进行全文搜索(mysql)
【发布时间】:2011-12-25 16:08:48
【问题描述】:

我正在使用 mysql 中的全文搜索来搜索一个相当大的文章数据库,并试图通过引用字符串来解决这一切。

基本上,当我搜索“john smith”逮捕时,我希望它返回包含“John Smith”和“arrest”的文章,而不是只有“John”和“arrest”的故事,绝对不是故事只有“逮捕”的人

全文搜索似乎不会同时尊重字符串中的引号和其他术语。

我试过了:

MATCH(headline,byline,body,keywords) 
AGAINST('"John Smith" arrest' IN BOOLEAN MODE)

MATCH(headline,byline,body,keywords) 
AGAINST('"John Smith" + arrest' IN BOOLEAN MODE)

只做这样的事情可以吗?

MATCH(headline,byline,body,keywords) 
AGAINST('John + Smith + arrest' IN BOOLEAN MODE)

这可能行得通,但并不完全准确。

感谢您的帮助。

【问题讨论】:

    标签: mysql full-text-search boolean


    【解决方案1】:

    默认情况下,全文搜索使用 OR 组合术语。这意味着,在您的第一个示例中,您正在搜索带有单词“arrest”或短语“John Smith”的行。要要求返回的行同时具有这两个术语,请使用加号运算符:

    MATCH(headline,byline,body,keywords) 
    AGAINST('+"John Smith" +arrest' IN BOOLEAN MODE)
    

    【讨论】:

      【解决方案2】:

      根据http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html,格式为:

      '+"John Smith" +arrest'
      

      【讨论】:

        【解决方案3】:

        我不确定 "+ 是否可以组合,但试试这个

        MATCH(headline,byline,body,keywords) 
        AGAINST('+"John Smith" +arrest' IN BOOLEAN MODE)
        

        如果不起作用,那么应该这样做

        WHERE
          MATCH(headline,byline,body,keywords) 
          AGAINST('"John Smith"' IN BOOLEAN MODE)
        AND
          MATCH(headline,byline,body,keywords) 
          AGAINST('+arrest' IN BOOLEAN MODE)
        

        文档http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

        【讨论】:

          猜你喜欢
          • 2014-07-07
          • 1970-01-01
          • 2021-07-29
          • 1970-01-01
          • 1970-01-01
          • 2015-06-15
          • 2013-10-10
          • 1970-01-01
          • 2012-07-16
          相关资源
          最近更新 更多