ホームページ > データベース > mysql チュートリアル > MySQL Live Search で「ベストマッチ」順序を実装するにはどうすればよいですか?

MySQL Live Search で「ベストマッチ」順序を実装するにはどうすればよいですか?

DDD
リリース: 2024-12-29 14:16:12
オリジナル
598 人が閲覧しました

How to Implement

「ベストマッチ」による 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:

  • CASE 式は、検索文字列が単語内で一致する場所に基づいて優先順位を割り当てます。
  • 結果は、先頭から始まる一致で順序付けされます (優先順位 1)。

内の位置による順序付けWord

また、単語内の検索文字列の位置に基づいて結果を並べ替えるには、LOCATE() 関数を使用できます。

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
ログイン後にコピー

このアプローチでは、

  • LOCATE() は、検索文字列の開始位置を決定します。
  • 結果はこのポジションの順に並べられ、低いポジション (先頭に近い) が上位にランクされます。

タイブレーカーの処理

複数の単語が同じ検索文字列の位置を共有する場合、二次的な並べ替えを導入することをお勧めします。

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
ログイン後にコピー

別の順序付け基準 (アルファベット順の並べ替えなど) を追加すると、結びつきを解消し、一貫した順序付けを保証できます。

以上がMySQL Live Search で「ベストマッチ」順序を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート