2016-11-06 2 views
0

私はSolr 6.2インスタンスを実行していますが、私はその利点と限界を探求しています。私が実行した1つの制限は、フィールド関数クエリに基づいてデータをソートまたはフィルタリングできないようです。フィールドで定義された関数クエリによる結果のソートまたはフィルタリング

.../solr/collection/select?q=*:*&fl=*,total:sum(v1,v2)&fq=total:[10 TO *] 

Solrにはtotalフィールドが存在しないというエラーで応答します。実際、フィールドはデータセットの保存された部分ではないため、スキーマに定義されていません。クエリ時に計算されます。彼らはそれを疑似フィールドと呼びます。私はドキュメンテーションやソリューションのオンラインで例を見つけることができませんでした。では、これを回避する方法はありますか?

答えて

-1

これは可能です。トライアル合計の代わりに。 ここに詳しい情報があります。 https://wiki.apache.org/solr/FunctionQuery#What_is_a_Function.3F

唯一のwikiの例です。

例関数を使用すると、機能クエリはSolrのに使用することができる方法のよりよい理解を与えるために
を問い合わせ、インデックス格納しメートルxの寸法を仮定し、Y、格納された任意の名前を持ついくつかの仮説ボックスのZフィールドboxname内。 findboxという名前のボックスを検索したいが、ボックスの量に応じてランク付けするとします。クエリパラメータは以下のようになります
Q = boxname:findbox ヴァル: "製品(X、Y、Z)"

このクエリは、ボリュームに基づいて結果をランク付けします。 = *、

スコアあなたはまた、体重などの箱の重さを格納するフィールドがあるとし
& FL:計算されたボリュームを取得するためには、結果のボリュームが含まれますスコアを要求する必要があります。ボックスの密度でソートしてスコアの密度値を返すには、 http://localhost:8983/solr/collection_name/select?q=boxname:findboxval: "div(weight、product(x、y、z))" & fl = boxname xyz重量スコア '

あなたはそれについてもっと読むことができます。 https://cwiki.apache.org/confluence/display/solr/Function+Queries

は私がやってんだよ、この solr/collection/select?q=*:* _val_:"sum(v1,v2)"&fl=* score&fq={!frange l=10 }sum(v1,v2)

+0

を試してみてください。同じ関数を 'fq'や' sort'パラメータに再入力しなくても、擬似フィールドでフィルタリングするにはどうしたらいいですか? – Brett

+0

合計:[10 TO *]は何ですか? – root545

+0

これは範囲の問い合わせです。それは、 'total'が10以上のレコードを返します。 – Brett

関連する問題