【问题标题】:exact word matches with different combinations from given query string in mysql full-text search与mysql全文搜索中给定查询字符串的不同组合的确切单词匹配
【发布时间】:2012-12-04 06:48:31
【问题描述】:

如何使 myisam 表返回与不同单词组合匹配的结果,而给定搜索字符串仅此而已。

我在标签表上使用以下查询

SELECT * FROM tags WHERE MATCH (name) AGAINST('word1 word2'));

表格可能包含如下行

  • 1字1字2字3
  • 2字2字3字4
  • 3 字1
  • 4字3字2
  • 5 字2
  • 6字2字1
  • 7字1字2
  • 8字3字4

我只需要以下行作为结果

  • 3 字1
  • 5 字2
  • 6字2字1
  • 7字1字2

但我得到的实际结果是

  • 1字1字2字3
  • 2字2字3字4
  • 3 字1
  • 4字3字2
  • 5 字2
  • 6字2字1
  • 7字1字2

如何做到这一点??

我已经尝试使用 + 进行布尔模式搜索,但它使得 + 的单词在搜索结果中成为强制性的,这不是我想要的。

【问题讨论】:

    标签: mysql full-text-search myisam


    【解决方案1】:

    这可能是一个迟到的回复,但是,这将解决问题。使用 MySQL FTS 的IN BOOLEAN MODE

    SELECT * FROM `tags` WHERE MATCH (`name`) AGAINST('+word1 +word2' IN BOOLEAN MODE)
    

    看看Full Text Boolean Mode

    注意在实现这个特性时,MySQL 有时会使用 称为隐含布尔逻辑,其中

    + 代表与

    - 代表非

    [no operator] 暗示或

    【讨论】:

      【解决方案2】:

      我不认为 mysql FULLTEXT 支持你想要的。我只能做你想做的事

      SELECT * 
      FROM tags 
      where (name LIKE 'word1' OR name LIKE 'word2' OR name LIKE 'word1 word2' or name LIKE 'word2 word1') ;
      

      在此处阅读有关全文的更多信息mysql fulltext

      【讨论】:

        猜你喜欢
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多