我需要一个查询来搜索带有多个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
”的方法相同。但它不适用于多个单词。
所以我需要根据我提到的所有案例得到结果。请有人帮我找到解决方案。
答案 0 :(得分:0)
根据MySQL 5.5手册,您将使用+代表AND, - 对于NOT和OR不会获得运算符。如果您查看以下链接,它就是一个很好的例子。