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

検索用語の位置に基づいて「最適一致」で MySQL 検索結果を並べ替えるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-30 00:37:20976ブラウズ

How Can I Order MySQL Search Results by

「最適一致」に基づいた 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。