質問

solrnetを使用して、「タグ」と呼ばれるマルチバリューフィールドがあるsolrインデックスにアクセスしています。次の擬似コードクエリを実行したい:

(タグ:スタック)^10または(タグ:オーバー)^5または(タグ:フロー)^2

「スタック」という用語が10にブーストされている場合、「オーバー」は5によってブーストされ、「フロー」は2によってブーストされています。フロー」など

私が抱えている問題は、「フロー」はいくつかのドキュメントにのみ表示されるが、「スタック」が荷重に表示され、その後、「フロー」があるドキュメントが「スタック」を持つドキュメントの上に表示されるということです。

このプロジェクトがLuceneでまっすぐに実装されたとき、私はConstantsCorequeryを使用しましたが、これらはブースト値のみに基づいてスコアに基づいてIDFを排除しました。

これは、solrとsolrnetでどのようにして達成できますか?できない場合、この問題にアプローチできる別の方法がありますか?

前もって感謝します!

役に立ちましたか?

解決

solrで定数corequeryを直接表現する方法はないと思いますが、 範囲とプレフィックスクエリは、フードの下で定数corequeryを使用します, 、だからあなたは範囲クエリを偽造してみることができます。 tags:[flow TO flow]

または、独自のSolr QueryParserを実装できます。

他のヒント

solr 5.1以降は、 ^=演算子を介してクエリパーサー構文にこれを組み込んでいます。

したがって、元のクエリを取得してください:(タグ:スタック)^10または(タグ:オーバー)^5または(タグ:フロー)^2

^を^=に置き換えて、ブーストから定数に変更します:(タグ:スタック)^= 10または(タグ:オーバー)^= 5または(タグ:フロー)^= 2

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top