ホームページ >データベース >mysql チュートリアル >特定の列を優先して MySQL フルテキスト検索の関連性を最適化するにはどうすればよいですか?

特定の列を優先して MySQL フルテキスト検索の関連性を最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 21:34:131007ブラウズ

How Can I Optimize MySQL Full-Text Search Relevance by Prioritizing Specific Columns?

関連性と列の優先順位付けによる全文検索のための MySQL クエリの最適化

MySQL の MATCH( ) および AGAINST() 関数を使用すると、ユーザーは特定の項目を優先しながら、関連性によって結果を並べ替える必要に遭遇することがよくあります。列。単語数に基づいて関連性を計算するのは簡単ですが、列の関連性に優先順位を付けるのは難しい場合があります。

この問題に対処するには、列固有の関連性の尺度を組み込んだ変更されたクエリを使用できます。追加の関連性列を作成する代わりに、次のクエリでは新しい重み係数を導入しています。

SELECT pages.*,
       MATCH (head, body) AGAINST ('some words') AS relevance,
       MATCH (head) AGAINST ('some words') * 2 AS title_relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words')
ORDER BY title_relevance DESC, relevance DESC

-- Alternatively:
ORDER BY 0.5 * title_relevance + relevance DESC

この変更されたクエリでは、先頭列で見つかった単語の関連性が 2 倍になり、それによって関連性において列が効果的に優先されます。計算。あるいは、カスタムの重み乗数を適用して優先順位をさらに微調整することもできます。

より高度な優先順位付けと重み付けのオプションについては、重み付け演算子とランキング アルゴリズムの広範なカスタマイズを提供する Postgres などの代替データベース エンジンを検討することを検討してください。 .

以上が特定の列を優先して MySQL フルテキスト検索の関連性を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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