【发布时间】: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