【问题标题】:Multiple AND/OR option with Full text Boolean search具有全文布尔搜索的多个 AND/OR 选项
【发布时间】:2015-06-24 07:56:44
【问题描述】:

我需要一个查询来使用多个 AND/OR 选项搜索关键字。该字段在 mysql 中被标记为全文。

第一个关键字是:"Keyword1", 第二个是"Keyword2",第三个是"Keyword3"

我需要通过单个文本框包含所有关键字。所以我会像"Keyword1" AND "Keyword" AND "Keyword"一样发送。在这种情况下,我们需要根据所有关键字获取结果。 其他一些情况,

1) "Keyword1" AND "Keyword2" OR "Keyword3" 
2) "Keyword1" OR "Keyword2" AND "Keyword3"
3) "Keyword1" AND "Keyword2" NOT "Keyword3"
4) "Keyword1" NOT "Keyword2"

这可能是 3 个关键字或 2 个关键字。

我正在使用以下查询进行单个关键字搜索。首先我会得到PHP 变量中的值,然后我会将它传递给mysql。

SELECT * FROM TABLE WHERE MATCH (pd_description, pd_awards, pd_experience, pd_qualification) AGAINST ('keyword1' IN BOOLEAN MODE)

我尝试了以下方法来找到解决方案,但它仅适用于 2 个关键字。

if (strpos($search_text,' AND ') !== false) {
      $explode_keyword      = explode(' AND ',$search_text);
      $keyword_left         = $explode_keyword[0];
      $keyword_right        = $explode_keyword[1]; 
      $string_match         = '"'.$keyword_left.'"';
      $string_match_right         = '"'.$keyword_right.'"';
}

Mysql查询我用过,

SELECT * FROM TABLE WHERE MATCH (pd_description, pd_awards, pd_experience, pd_qualification) AGAINST ('".$string_match."' IN BOOLEAN MODE) AND MATCH (pd_description, pd_awards, pd_experience, pd_qualification) AGAINST ('".$string_match_right."' IN BOOLEAN MODE).

我用于“OR”的方法相同。但它不适用于多个单词。 所以我需要根据我提到的所有案例得到结果。请有人帮我找到解决方案。

【问题讨论】:

    标签: php mysql boolean full-text-search


    【解决方案1】:

    根据 MySQL 5.5 手册,您将使用 + 表示 AND,- 表示 NOT 和 OR 不会得到运算符。如果您查看下面的链接,它有一个很好的例子。

    MySQL 5.5 Manual-Boolean Full Text Searches

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 2020-07-20
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 2016-12-10
      相关资源
      最近更新 更多