ホームページ > データベース > mysql チュートリアル > MySQL 検索結果を「最も一致するもの」で並べ替えるにはどうすればよいですか?

MySQL 検索結果を「最も一致するもの」で並べ替えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-28 15:21:14
オリジナル
210 人が閲覧しました

How Can I Order MySQL Search Results by

「ベストマッチ」による 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
ログイン後にコピー

これは、検索文字列 (値 1 が割り当てられる) で始まる一致を優先し、次に文字列を含む一致 (値 3 が割り当てられる) が続き、最後に文字列が含まれる一致が優先されます。他の位置で発生します (値 2 が割り当てられます)。

位置による一致の順序

あるいは、目的は、単語内の一致した文字列の位置に基づいて結果を並べ替えることです。クエリでは LOCATE 関数を使用できます。

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

このクエリは、最初に出現した文字列のインデックスに基づいて結果を並べ替えます。各単語内の検索文字列。

Breaking Ties

複数の単語が検索基準に等しく一致するシナリオでは、タイブレーカーを使用して順序をさらに調整します。これは、追加の ORDER BY 句を追加することで実現できます。

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

The プレースホルダーは、単語の長さ、アルファベット順、カスタム指標など、ランキングに使用される追加の基準に置き換えることができます。

以上がMySQL 検索結果を「最も一致するもの」で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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