ホームページ >データベース >mysql チュートリアル >検索用語の位置に基づいて「最適一致」で MySQL 検索結果を並べ替えるにはどうすればよいですか?
「最適一致」に基づいた MySQL 結果の順序付け
このシナリオの目標は、結果に優先順位を付けるために MySQL ライブ検索クエリを強化することです。
現在、クエリは結果を並べ替えています。アルファベット順:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY word ASC
目的の並べ替えを実現するには、条件付きロジックを導入して、結果内の検索語の位置を区別できます。
開始、中間、単語の終わり
単語の先頭での一致が優先されるように結果を配置するには、次を使用できます。 query:
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)
このクエリは、各結果内の検索語の位置を計算し、並べ替えます。
同順位の処理
複数の結果が同じスコアまたは位置を持つ場合、次の 2 番目の並べ替え基準を導入できます:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
<何か>を置き換えることによって関連するフィールド (単語の頻度など) を使用すると、関係を解消し、結果をさらに並べ替えることができます。
以上が検索用語の位置に基づいて「最適一致」で MySQL 検索結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。