简体   繁体   English

如何使用OR在多个字段中与WHERE一起使用mysql FULLTEXT Search?

[英]How to use mysql FULLTEXT Search with WHERE in multiple fields using OR?

I am using mysql FULLTEXT Search, innodb table engine. 我正在使用mysql FULLTEXT Search, innodb表引擎。
search term : tom 搜索词: tom

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND category = 100 OR category = 200 ORDER BY seeders DESC LIMIT 0, 30

above query gives 550 records, expected records are 6 上面的查询给出了550条记录,预期记录是6

but if i search for each category separately. 但是,如果我分别搜索每个类别。 searching in category 100 category 100搜索

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND category = 100 ORDER BY seeders DESC LIMIT 0, 30

gives 5 records 给出5条记录

and searching in category 200 并在category 200搜索

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND category = 200 ORDER BY seeders DESC LIMIT 0, 30

gives 1 record. 给出1记录。

so i am expecting records 6 , by combining 5+1 but i am getting 550, even those records which doesn't have word tom in it. 所以我期望通过结合5 + 1来获得记录6 ,但是我得到了550,即使那些没有单词tom记录也是如此。


Another Issue, is searching in category or sub_category in same query for word tom 另一个问题是,在同一查询中的categorysub_category category中搜索单词tom

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND sub_category = 101 OR category = 200 ORDER BY seeders DESC LIMIT 0, 30

gives 550 records. 给出550条记录。 expected records are 6 预期记录为6

so how can i fix this ? 那么我该如何解决呢?

i have found solution. 我找到了解决方案。 the query should be 查询应该是

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND (category = 100 OR category = 200) ORDER BY seeders DESC LIMIT 0, 30

notice, the OR operator is in brackets 注意,“ OR运算符放在方括号中

and 2nd query issue, searching in two fields using OR becomes 和第二个查询问题,使用OR在两个字段中进行搜索成为

SELECT * FROM content WHERE MATCH(title) AGAINST('tom' IN BOOLEAN MODE) AND is_enabled = 1  AND (sub_category = 101 OR category = 200) ORDER BY seeders DESC LIMIT 0, 30

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM