SQL Server 2008 FTSを使用していますが、加重ランキングを検索結果に統合できるようにしたいと考えています。ただし、検索語が見つかる列の重みを変えたいと思います。たとえば、[タイトル]列と[説明]列がある場合、[タイトル]での一致が、[説明]での一致よりも上位にランク付けされるようにします。
これはSQLServer2008で可能ですか?私が見る限り、列の位置ではなく、特定の用語にのみ重みを追加できます。
SQL Server 2008 FTSを使用していますが、加重ランキングを検索結果に統合できるようにしたいと考えています。ただし、検索語が見つかる列の重みを変えたいと思います。たとえば、[タイトル]列と[説明]列がある場合、[タイトル]での一致が、[説明]での一致よりも上位にランク付けされるようにします。
これはSQLServer2008で可能ですか?私が見る限り、列の位置ではなく、特定の用語にのみ重みを追加できます。
各列でFREETEXTTABLE関数を個別に使用してから、返されるランク列に重みを割り当てることができます。ランク列は検索間の比較に必ずしも有効ではないことをどこかで読んだと思います。そのため、正確な結果が得られるように実験する必要があるかもしれません。
SELECT title, filename, sum(relevance)
FROM (
SELECT title, filename, 10 AS relevance FROM page WHERE title like ‘%about%’
UNION
SELECT title, filename, 7 AS relevance FROM page WHERE filename like ‘%about%’
UNION
SELECT title, filename, 5 AS relevance FROM page WHERE keywords like ‘%about%’
UNION
SELECT title, filename, 2 AS relevance FROM page WHERE description like ‘%about%’
) results
GROUP BY title, filename
ORDER BY relevance desc;