1

スペースでフレーズをトークン化するクエリがあり、フレーズに最適な一致を探す必要があります。最初にその一致を返す必要があります。where句を使用して単一のクエリでこれを実行しようとしています。これは可能ですか?私はこれらの行に沿って何かをしようとしています:

for: 私のフレーズ

name="my phrase" または "%my phrase%" のような名前、または ("%my%" のような名前と "%phrase%" のような名前) または ("%my%" のような名前または "%my%" のような名前) の myTable から名前を選択します。 "%phrase%") 制限 5;

基本的に、where句が一致した順に上位5つの一致が必要です。デフォルトでは、MySQL は最適化された方法で where 句を評価することを知っています。それらを順番に評価するように強制する方法はありますか? もしそうなら、WHERE句が一致した順に結果を返すようにするにはどうすればよいですか?

4

1 に答える 1

1

これの代わりに全文検索を使用してください。それははるかに速く、より柔軟で、結果を記録することができます。Google for more

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC;
于 2010-01-24T15:31:32.917 に答える