MySQL 全文検索: 関連性と列の優先順位付けの強化
データベース内の複数の列にわたって特定の用語を検索することは一般的なタスクです。 MySQL には、全文検索を実行するための MATCH() 関数と AGAINST() 関数が用意されており、ユーザーは検索用語と検索モードを指定できます。
ただし、複数の列を処理し、検索の関連性を優先する場合は、追加の考慮事項が発生します。関連性によって結果を並べ替えるには、SELECT * FROM Pages WHERE MATCH(head, body) AGAINST('some Words' IN BOOLEAN MODE) のような単純なクエリを使用できます。
特定の列に基づいて関連性を優先するには、次のようにします。ヘッド列の場合は、別のアプローチが必要です。追加の列を作成して先頭列の関連性スコアを保存することで、ユーザーは結果の順序付けと優先順位付けをより柔軟に行うことができます。ただし、このアプローチでは、同じテーブルに対する追加の検索操作が必要になるため、パフォーマンスに影響します。
別の解決策としては、追加の関連性列を利用し、それを一般的な全文検索の関連性スコアと組み合わせることが必要です。これは、次のようなクエリを使用して実現できます。
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_relevance FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY title_relevance DESC, relevance DESC
このクエリは、全体的な検索関連性を維持しながら、検索語が先頭列に出現する結果に高い関連性を割り当てます。
さらに、次のように使用します。 PostgreSQL などのデータベース エンジンは、構成可能な演算子の重み付けとランキング メカニズムを提供し、関連性の優先順位付けとスコアリングのためのより高度なオプションを提供できます。
以上がMySQL 全文検索で複数の列にわたって検索の関連性に優先順位を付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。