1

Solr インスタンスがあり、Solr 関数クエリを使用して、ドキュメントごとに独自のスコアを計算したいと考えています。例として、次のクエリがあるとします。

q={!func}termfreq('text', 'foo')

これを行うと、インデックス内のすべてのドキュメントの数である numfound が結果に含まれます。特定の数値を下回るスコアを持つドキュメントを除外できるようにしたいので、理想的には、次のような rangequery を使用してフィルタリングしたいと考えています。

fq={!frange l=1}score

私のクエリパラメータが結果スコアを決定するためです。しかし、これを行うと、次のようなエラーが表示されます。

"error": {
    "msg": "undefined field: \"score\"",
    "code": 400
}

代わりに、次のようなフィルターを追加してみました:

fq={!frange l=1}termfreq('text', 'foo')

これにより正しい結果が得られますが、計算が遅くなる可能性があるため、フィルタークエリでスコア疑似フィールドを使用するか、他の方法でSolrにfunctionqueryの結果をキャッシュさせることができるかどうかを知りたいですクエリパラメータ? または、これを実現する rangequery フィルター アプローチの代替手段はありますか?

4

1 に答える 1

1

これは答えられていないことに気づきました。私自身調べたことがあります。これらのリンクが役立つと思いました。

サーチハブ

検索-Lucene

于 2014-01-30T09:18:03.700 に答える