関連性順に並べた MySQL 検索結果
質問:
MySQL での検索クエリの最適化検索文字列が単語の先頭に近い位置にある結果を優先し、よりユーザーフレンドリーな結果をもたらします。 「最も一致する」順序。
説明:
最初のクエリ、SELECT word FROM Words WHERE word LIKE '%searchstring%' ORDER BY word ASC は、結果をアルファベット順に並べ替えます。単語内の検索文字列の配置を優先する必要はありません。この問題に対処するには、最初の並べ替え方法に MySQL の CASE ステートメントを利用し、2 番目の並べ替え方法に LOCATE 関数を利用できます。
解決策:
最初の並べ替え方法(開始、中間、終了word):
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 -- Starts with search string WHEN word LIKE '%searchstring' THEN 3 -- Includes search string ELSE 2 -- Does not include search string END
2 番目の並べ替え方法 (一致した文字列の位置):
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
タイブレーカー (オプション):
複数の単語が同じ位置を共有するシナリオで順序をさらに調整するには単語内に、単語自体を使用して 2 番目の並べ替えフィールドを追加できます:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word), word
結論:
これらの手法を使用すると、検索結果を次の順序で並べ替えることができます。関連性。単語の先頭に近い部分に一致するものが優先されます。これにより、より直感的なユーザー エクスペリエンスが提供され、検索機能の精度が向上します。
以上がMySQL 検索を最適化して、検索語が単語内で前に出現する結果を優先するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。