具有全文布尔搜索的多个AND / OR选项

时间:2015-06-24 07:56:45

标签: php mysql boolean full-text-search

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

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

我需要在via单个文本框中包含所有关键字。所以我会像"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”的方法相同。但它不适用于多个单词。 所以我需要根据我提到的所有案例得到结果。请有人帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

根据MySQL 5.5手册,您将使用+代表AND, - 对于NOT和OR不会获得运算符。如果您查看以下链接,它就是一个很好的例子。

MySQL 5.5 Manual-Boolean Full Text Searches