Mysql bool 运算符全文搜索

标签 mysql full-text-search

我正在尝试使用 OR 和 AND 搜索值

这是 OR 的示例

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 | 1)' IN BOOLEAN MODE);

这可行,但如果我想做并且

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 & 1)' IN BOOLEAN MODE);

这将尝试在同一行中查找具有 10 和 1 的联系人,但我想搜索具有 10 和 1 作为 item_id 但位于多行的联系人

例如

contact_id    item_id
    1             1
    1             10
    2             10

AND 搜索将返回 contact_id - 1

我认为通过一次搜索不可能实现这一点,但我想在使代码变得比实际需要的更复杂之前先询问一下。

谢谢蒂姆

最佳答案

首先,您滥用了 ANDOR 全文搜索运算符。 |&reserved for future use ;按照 documentation 中的说明使用 +- .

从您的示例中我似乎不明白的另一个方面是,如果您使用整数,为什么要使用全文搜索。一个简单的 WHERE item_id IN (1, 10) 就足够了。

但是,如果您需要全文搜索,我建议使用 Sphinx .

关于Mysql bool 运算符全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138772/

相关文章:

php - 在 CodeIgniter 中循环遍历多维数组

Mysql子查询差异错误

mysql - MATCH() 子句中列的顺序重要吗?

php - 如何通过单个查询从带有 where 过滤器的 30k MySQL 表中快速选择 3 条随机记录?

mysql - 定义存储过程 MySQL 时出错

full-text-search - 在 Solr 中,如何针对一个字段查询多值字段中不同的一组值

php - 有没有办法默认要求全文搜索中的所有单词?

full-text-search - 如何评估托管全文搜索解决方案?

c# - 不能在用户事务内使用 CREATE FULLTEXT INDEX/CATALOG 语句

mysql - 我该如何重构这个 MySQL 查询?