ホームページ >データベース >mysql チュートリアル >MySQL 全文検索で特定のフィールドの関連性を高めるにはどうすればよいですか?

MySQL 全文検索で特定のフィールドの関連性を高めるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 03:02:03548ブラウズ

How to Boost Relevance in MySQL Fulltext Search for Specific Fields?

特定のフィールドに対する MySQL フルテキスト検索の関連性を強化する方法

キーワードとコンテンツという 2 つの列を持つデータベースがあるとします。両方の列をカバーするフルテキスト インデックスが作成されました。ただし、キーワード列に特定の単語が含まれる行を、コンテンツ列に同じ単語が含まれる行よりも優先したいとします。

解決策:

3 つのフルテキスト インデックスを作成します。

  1. キーワード列のみのインデックス
  2. コンテンツ列のみのインデックス
  3. キーワードとコンテンツ列の両方のインデックス

次に、変更しますクエリは次のようになります:

SELECT id, keyword, content,
  MATCH (keyword) AGAINST ('watermelon') AS rel1,
  MATCH (content) AGAINST ('watermelon') AS rel2
FROM table
WHERE MATCH (keyword,content) AGAINST ('watermelon')
ORDER BY (rel1*1.5)+(rel2) DESC

説明:

  • rel1 と rel2 は、それぞれキーワード列とコンテンツ列のクエリの関連性を計算します。
  • rel1 に 1.5 を乗算すると、キーワードの重みが高くなります。
  • WHERE 句では、結果が確実に返されるようにキーワードとコンテンツの複合インデックスを引き続き使用します。
  • この手法再現率 (どのような結果が返されるか) と関連性 (一致がどのように優先されるか) を制御し、特定のフィールドをより目立たせることができます。

以上がMySQL 全文検索で特定のフィールドの関連性を高めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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