「ベストマッチ」による MySQL の順序
MySQL でライブ検索を実行する場合、アルファベット順に基づくデフォルトの結果の順序付けが提供されない場合があります。最も関連性の高い結果。検索文字列が単語の先頭に近い結果に優先順位を付けるには、「最も一致する」順序の実装を検討してください。
開始位置による順序
結果を配置するには検索文字列が最初に単語の先頭に表示される場合、多層の順序付けアプローチを利用できます。
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
ここではquery:
内の位置による順序付けWord
また、単語内の検索文字列の位置に基づいて結果を並べ替えるには、LOCATE() 関数を使用できます。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
このアプローチでは、
タイブレーカーの処理
複数の単語が同じ検索文字列の位置を共有する場合、二次的な並べ替えを導入することをお勧めします。
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
別の順序付け基準 (アルファベット順の並べ替えなど) を追加すると、結びつきを解消し、一貫した順序付けを保証できます。
以上がMySQL Live Search で「ベストマッチ」順序を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。