MySQL在某些列中与文字字符串匹配,但在其他列中则不匹配

时间:2013-07-15 00:56:47

标签: mysql full-text-search

我有一个查询

SELECT *
FROM tbl_listing AS al
WHERE 
(MATCH(al.title, al.listing_title) AGAINST('search query*' IN BOOLEAN MODE) OR
MATCH(al.description) AGAINST('search query' IN BOOLEAN MODE) OR
MATCH(al.artist_full_name) AGAINST('search query*' IN BOOLEAN MODE));

工作正常,但我似乎无法确定如何确保描述搜索是文字搜索。

所以,如果我有

search.php?search_query=Abstract+Painting+Philisophical+Spiritual+Barzakh+

我想要所有记录,其中title,listing_title和artist包含任何查询词和描述,只要该词组在描述的任何部分匹配。

由于

1 个答案:

答案 0 :(得分:1)

在需要精确词组匹配的位置添加双引号:

....
WHERE 
    MATCH(title, listing_title)
        AGAINST('search query' IN BOOLEAN MODE) -- matches if any one word is present in "title" or "listing_title"
OR
    MATCH(description) AGAINST('"search query"' IN BOOLEAN MODE) --  matches the exact phrase only

根据您的需要调整逻辑运算符。