2016-07-01 19 views
0

検索プロジェクトの1つでmongoDBでSOLRを使用しています。 SOLRは非常に強力です。 現在、私は、クエリが複数の単語である場合、異なるキーワードに対して異なるスコアを設定する方法を探しています。SOLR - 複数単語の検索クエリで異なる単語に異なるスコア

ユーザーが黒い人形の家を検索する場合

黒の重量は人形より大きく、人形の重量は家よりも大きいはずです。

黒>人形>ハウス

これをSOLRで実装することは可能ですか?はいの場合、どうですか?

答えて

1

あなたは(textという名前のフィールドで検索)標準Luceneクエリ構文で各用語に別々の重みを与えることができます。

text:black^10 text:doll^5 text:house 

これはhouseとしてblack 10倍の重みを与え、そしてdoll 5う多くの場合、houseと重いが、半分の重量はblackである。あなたはあなたが探している結果を得るために体重を調整する必要があります。 q=フィールドの通常のテキストを(e)dismaxを照会パーサーとして使用する場合は、bqを使用して、これらのブーストを照会自体とは別に追加することができます。

+0

パーサを使って複数のフィールドで検索が行われるので、q = "complete text"を使いたいと思います。 – sanju

+0

それから、 'field:foo^boost'構文で' bq'を使って、あなたのクエリーをすでにそれと同じに保つことができます。あなたはどこかの言葉にそれらのブーストを追加せずに単一の言葉を後押しすることはできません: – MatsLindh

0

クエリ内の用語を強調表示してみましたか?クエリ内の用語に対して異なるブースト値を指定することができます。 例:あなたがあなたのクエリを変換する場合:

textfeild:black^6 textfeild:doll^5 textfeild:house^2

あなたが上位文書との結果が、黒黒の横、家で次回のためにマッチします取得します。

用語の重みとブースト値を掛け合わせます。ここで黒は6、人形は5、家は2です。

+0

私はパーザを使って複数のフィールドで検索が行われるので、q = "完全なテキスト"を使用します。 – sanju

+0

@MatsLindhが述べているように、用語やフレーズを "ブースト"するべき要素を指定する 'Boost Query(bq)'は、 – vinod

関連する問題