:(「someB」)に対する結果は(「someA」)に対する条件一致(フィールド1)によって返された場合はMySQLのフルテキストパフォーマンスのソリューション
select ... from ... where match(field1) against('someA') and match(field2) against('someB') limit 50
&マッチ(フィールド2)は両方とも巨大ですクエリ全体が非常に遅くなります。
これに対する解決策はありますか?
:(「someB」)に対する結果は(「someA」)に対する条件一致(フィールド1)によって返された場合はMySQLのフルテキストパフォーマンスのソリューション
select ... from ... where match(field1) against('someA') and match(field2) against('someB') limit 50
&マッチ(フィールド2)は両方とも巨大ですクエリ全体が非常に遅くなります。
これに対する解決策はありますか?
おそらくSphinxは、この問題を効率的に解決します。 Sphinxは強力な全文検索機能を提供します。私はそれがあなたがやろうとしていることなのかどうかは分かりませんが、それは近いと思います。
field1
とfield2
の2つの列に対して別のFULLTEXT
インデックスを作成することができます。その後で一度に両方の検索用語を検索:もちろん
MATCH(field1, field2) AGAINST ('+someA +someB') IN BOOLEAN MODE
、これはfield1
は、両方の検索語が含まれている行を見つけることができる、とfield2
はどちらも含まれていません。私はあなたのアプリの正確な要件についてはわかりません。