ホームページ >データベース >mysql チュートリアル >MySQL フルテキスト検索でさまざまなフィールドの関連性に優先順位を付けるにはどうすればよいですか?

MySQL フルテキスト検索でさまざまなフィールドの関連性に優先順位を付けるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 01:44:30520ブラウズ

How Can I Prioritize Relevance in MySQL Fulltext Search for Different Fields?

MySQL 全文検索での関連性の優先順位付けの実現

複数のフィールドにわたって全文検索を実行する場合、MySQL は各フィールドで見つかった一致に同等の関連性を割り当てます。ただし、特定のフィールドを優先して、全体の関連性スコアにより大きく貢献することが望ましいシナリオもあるでしょう。

解決策: 加重インデックスを作成します

これを実現するには、複数の全文インデックスを作成します:

  • 優先度の高いフィールド (キーワードなど) に 1 つ
  • 優先度の低いフィールド (コンテンツなど) に 1 つ
  • 両方のフィールドを組み合わせたもの (キーワード、コンテンツなど)

関連性を重み付けしたクエリの例

MATCH (キーワード) AGAINST を使用する (... ) 関数と MATCH (コンテンツ) AGAINST (...) 関数を使用すると、フィールドごとに個別の関連性スコアを計算できます。 CASE ステートメントは、特定のフィールドに検索語が含まれるかどうかを示すバイナリ値を割り当てます:

SELECT *, 
CASE WHEN Keywords LIKE '%watermelon%' THEN 1 ELSE 0 END AS keywordmatch, 
CASE WHEN Content LIKE '%watermelon%' THEN 1 ELSE 0 END AS contentmatch,

以上がMySQL フルテキスト検索でさまざまなフィールドの関連性に優先順位を付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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