2012-03-06 8 views
0

自分のウェブサイトでフリーテキストを使って検索結果を改善していますが、わからないことがあります。私のフリーテキスト検索を調整して正しい結果を返す - 瞬間にランキングが外に出る

私は

isabout("*redflower*" weight (.3), "*red*" weight (.2), flower weight (.1)) 

containtstable()と)私の自由なテキスト検索としてこれを使用している場合、私はこの説明がされて唯一のフィールドである172のランクでWildflower Seeds - Red Campionを取得ランクまたはも172としRed Mason Bee Boxを取得検索しました。私は、Wildflower Seeds - Red Campionには1つだけでなく2つの用語が含まれているため、より高いランク付けが必要と考えていたでしょう。

誰かが何が起きているのかを説明し、それを調整する方法のいくつかの例を提示して、すべての言葉の説明で高いランク付けをすることができますか?

編集:私も試してみました:

isabout("*redflower*", "*red*" weight (.2), "*flower*" weight (.1)) 

秒が持っているのでそれが起こる理由を私は理解していない21のランクで21とWildflower Seeds - Red CampionのランクでRed Mason Bee Boxに結果を変更両方の言葉は、ただ一つではない。

+0

どのデータベースエンジンおよびエディションをお使いですか? – Rabid

+0

SQL Server 2008 Web Edition。 – webnoob

答えて

1

この重み付け検索を実行する前に、NEAR演算子を使用して検索する方法を変更します。これにより、最も関連性の高い結果が最初に返されます。 'flower NEAR red'すなわち

- あなたはワイルドカードをリードしてきたことはできませんが、私は逆のインデックスのすべての私のフィールドを作成して、まずWildflower NEAR red

+1

これは効果的なアプローチです。逆のストップリストも作成する必要があるか、クエリを作成するときにストップワードをフィルタする必要があるかもしれません。 – Rabid

+0

良い点、ありがとう。 – webnoob

1

に変換されますどの"rewolf*" NEAR der'をするつもりですので、これは実際に私の例では動作しません。あなたの意図は、サフィックス用語( "*花")を定義するように見える - 私はSQL Server 2008フルテキスト検索エンジンの性質を信じてsupports prefix terms only( "野生*"はランキングを変更する) 。しかし、私はあなたがすでにこれを認識しているのを見ます。

第2に、ワイルドフラワーは2つの単語に分割されません。あなたはそれがそのワードブレーカとステミング機能を適用したときにエンジンが何をしているかを表示することができます便利なテーブル値関数があります - sys.dm_fts_parserは:

select * from sys.dm_fts_parser('"Wildflower Seeds - Red Campion"', 1033, null, 0) 


group_id phrase_id occurrence special_term  display_term expansion_type source_term 
----------- ----------- ----------- ---------------- --------------- -------------- -------------------------------- 
1   0   1   Exact Match  wildflower  0    Wildflower Seeds - Red Campion 
1   0   2   Exact Match  seeds   0    Wildflower Seeds - Red Campion 
1   0   3   Exact Match  red    0    Wildflower Seeds - Red Campion 
1   0   4   Exact Match  campion   0    Wildflower Seeds - Red Campion 

代替ソリューションは、手動でワイルドフラワーの花からThesauras expansionを定義することです。

<expansion> 
    <sub>flower</sub> 
    <sub>wildflower</sub> 
</expansion> 

しかし、この特定のケースでのみ修正されています。

関連する問題