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

标签 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+

我想要标题、列表标题和艺术家包含任何查询词和描述的所有记录,前提是该短语与描述的任何部分都匹配。

谢谢

最佳答案

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

....
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

调整逻辑运算符以满足您的需求。

关于MySQL 与某些列中的文字字符串匹配,但在其他列中则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645328/

相关文章:

PHP/MySQL mysql_num_rows 不返回值

mysql - 如何在现有表中添加外键约束

在 PostgreSQL 中进行全文搜索的 Django 模型架构

在 where 中使用全文而不是 order by

php - 让浏览器自动滚动到最近提交的评论

MySQL Case 语句(if else if equivalent)

Mysql 全文、匹配...和搜索字段中的@

solr - 导入丰富的文档时,SOLR 是否有最佳实践 schema.xml?

MongoDB全文搜索+部分单词匹配的解决方法

php - 在给定时间段内按月对查询结果进行分组