[英]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
另一个问题是,在同一查询中的category
或sub_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.