1

Lucene の Term [Boosting][1] クエリ構文、特に Ruby on Rails で sunspot_rails gem に問題があります。これにより、クエリ中に特定の用語の重みを指定でき、特定のフィールドの重み付けとは関係ありません。

sunspot によって生成された HTML クエリは、qf パラメータを使用して、検索するフィールドを設定どおりに指定し、q パラメータをクエリ自体に使用します。キャレットを検索用語に追加してブーストを指定すると (つまり、q=searchterm^5)、ブースト用語なしで結果が返される場合でも、結果は返されません。

一方、HTTP クエリを手動で作成し、検索するフィールド (q=title_texts:searchterm^5) を手動で指定すると、結果が返され、スコアがブーストの影響を受けているように見えます。

つまり、クエリ ターム ブースティングは、qf で指定されたフィールドと組み合わせて機能しないように見えます。

私のアプリケーションは、複数のフィールドにまたがる検索を呼び出し、それらのフィールドに関連付けられたそれぞれのブーストを使用して、条件付きでクエリの個々の用語をブーストします。

洞察はありますか?

[1]: http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting a Term

4

2 に答える 2

2

Sunspot は、全文検索に dismax パーサーを使用します。これは、通常の Lucene クエリ構文を避けて、クライアントが構築できる一連の追加パラメーター (qf など) と組み合わせた限定された (ただしユーザー入力に適した) クエリ構文を優先します。検索の仕組みを調整するためのアプリケーション。boost_fieldsSunspot は、フルテキスト DSLのメソッドを使用して、フィールドごとのブーストをサポートします。

http://outoftime.github.com/sunspot/docs/classes/Sunspot/DSL/Fulltext.html#M000129

于 2010-11-15T19:42:03.977 に答える
1

私が見つけた解決策は DisMax を使用することですが、ブーストされた用語を含むブール文字列を使用して bq パラメータを追加します。

于 2010-12-02T02:32:52.537 に答える