0
我正在使用mysql FULLTEXT搜索,innodb
表引擎。
搜索詞:tom
如何使用MySQL FULLTEXT使用OR在多個字段中使用WHERE搜索?
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
上面的查詢給550
記錄,預計記錄6
,但如果我搜索每個類別中分別。 在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
搜索給人5
記錄
和搜索在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
給1
記錄。
所以我期待記錄6
,通過結合5 + 1,但我越來越550,即使是那些沒有字tom
在其中的記錄。
的另一個問題,是 搜索在category
或sub_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
給550
記錄。預計記錄是6
所以我該如何解決這個問題?
嗯,這是有點明顯,你必須將適當的分組應用於您的條件。由於修復是如此微不足道,爲什麼不考慮完全刪除這個問題?在實際的全文檢索中提到它對未來的讀者沒有任何價值,因爲它主要處理構建適當的SQL查詢的能力。 – andrews