ライブ検索機能を使用してデータベーステーブルを検索する場合、多くの場合、結果を優先する方法で結果を順序付けすることが望ましいです。ベストマッチ。デフォルトでは、提供されているような単純なクエリでは、検索文字列の開始位置に基づいて結果が効果的に並べ替えられない可能性があります。
より正確な「最も一致する」並べ替えを実現するには、次のオプションを検討してください。
先頭に出現する一致文字列を最優先にして結果を並べ替えることが目的の場合、クエリは次のように変更できます。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 WHEN word LIKE '%searchstring' THEN 3 ELSE 2 END
これは、検索文字列 (値 1 が割り当てられる) で始まる一致を優先し、次に文字列を含む一致 (値 3 が割り当てられる) が続き、最後に文字列が含まれる一致が優先されます。他の位置で発生します (値 2 が割り当てられます)。
あるいは、目的は、単語内の一致した文字列の位置に基づいて結果を並べ替えることです。クエリでは LOCATE 関数を使用できます。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
このクエリは、最初に出現した文字列のインデックスに基づいて結果を並べ替えます。各単語内の検索文字列。
複数の単語が検索基準に等しく一致するシナリオでは、タイブレーカーを使用して順序をさらに調整します。これは、追加の ORDER BY 句を追加することで実現できます。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
The
以上がMySQL 検索結果を「最も一致するもの」で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。