2016-06-20 5 views
1

検索結果を照会する1つのテーブルに複数の記事があります。全文検索の使用検索キーワードが「近く」にある商品のリストを返すことができます。複数の全文検索SQLクエリがマージされ、採点された(順位付けされた検索結果)

全文検索では、NEAR区切り文字でシソーラス(FORMSOF)が許可されていないようです。

SQLでは、同じデータをさまざまな方法で検索し、スコアを返すクエリ(またはフルテキスト検索を使用する場合はRANK)を作成します。これらの結果をマージして重複がないようにし、ランク/スコアを合計して、それらのスコアをORDER BYすることができます。

また、ドキュメントが割り当てられている「タグ」の別のリンクテーブルを検索し、対応するタグを持つユーザーに余分なスコアを割り当てることもできます。

これらの要件を満たす最良の方法は何ですか?

答えて

0

('"word*" near "another*"')CONTAINSTABLEの文章のように全文検索で検索できます。アスタリスクは、'word''another'で始まる単語を互いに近くにランク付けするのに役立ちます。

FORMSOF(Thesaurus, word) AND FORMSOF(Thesaurus, another)の検索をCONTAINSTABLEと起動することができます。

結果をマージし、ORDER BYを使用して両方のRANKでソートします。

+0

ありがとうございます。 私はしばらくこの問題に悩まされていましたが、異なる検索結果に対して特定のクエリを書くことができることに気付きました。たとえば、 "単語"が "another"の近くにあり、次にformsof(シソーラス、単語)それはUNIONであり、結果によってグループ化し、合計RANKをSUM'ingします。 これは最も洗練されたソリューションではないかもしれませんが、スケーラビリティがあり、すぐに機能します。 – TattooedGun

+0

私の喜び!あなたが解決策を見つけるのに役立ちます – gofr1

関連する問題