0
mysql FULLTEXT Search、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
で検索すると、
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
category 200
に5
記録
1
レコードを提供します。
私は5 + 1を組み合わせることによって、レコード6
を期待していますが、単語がtom
でないレコードであっても、550を取得しています。
もう一つの問題は、単語tom
について同じクエリでcategory
またはsub_category
で検索
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