統計コンポーネント
統計コンポーネントは、ドキュメントセット内の数値、文字列、および日付フィールドの単純な統計を返します。
このセクションのサンプルクエリは、Solrに含まれている「techproducts」の例を実行していることを前提としています
bin/solr -e techproducts
統計コンポーネントのパラメーター
統計コンポーネントは、次のパラメーターを受け入れます
stats
-
オプション
デフォルト:
false
true
の場合、統計コンポーネントを呼び出します。 stats.field
-
必須
デフォルト: なし
統計を生成する必要があるフィールドを指定します。複数のフィールドの統計をリクエストするために、このパラメーターをクエリ内で複数回呼び出すことができます。
ローカルパラメーターを使用して、計算する必要があるサポートされている統計のサブセットを示すことや、単純なフィールド名の代わりに、任意の数値関数(またはクエリ)の結果に基づいて統計を計算することを示すことができます。以下の例を参照してください。
統計コンポーネントの例
以下のクエリは、2つの異なる数値フィールドに対して統計を計算するだけでなく、text
フィールドを使用してtermfreq()
関数呼び出しの結果に基づいて統計を計算する方法を示しています
https://127.0.0.1:8983/solr/techproducts/select?q=*:*&wt=xml&stats=true&stats.field={!func}termfreq('text','memory')&stats.field=price&stats.field=popularity&rows=0&indent=true
<lst name="stats">
<lst name="stats_fields">
<lst name="termfreq(text,memory)">
<double name="min">0.0</double>
<double name="max">3.0</double>
<long name="count">32</long>
<long name="missing">0</long>
<double name="sum">10.0</double>
<double name="sumOfSquares">22.0</double>
<double name="mean">0.3125</double>
<double name="stddev">0.7803018439949604</double>
<lst name="facets"/>
</lst>
<lst name="price">
<double name="min">0.0</double>
<double name="max">2199.0</double>
<long name="count">16</long>
<long name="missing">16</long>
<double name="sum">5251.270030975342</double>
<double name="sumOfSquares">6038619.175900028</double>
<double name="mean">328.20437693595886</double>
<double name="stddev">536.3536996709846</double>
<lst name="facets"/>
</lst>
<lst name="popularity">
<double name="min">0.0</double>
<double name="max">10.0</double>
<long name="count">15</long>
<long name="missing">17</long>
<double name="sum">85.0</double>
<double name="sumOfSquares">603.0</double>
<double name="mean">5.666666666666667</double>
<double name="stddev">2.943920288775949</double>
<lst name="facets"/>
</lst>
</lst>
</lst>
サポートされている統計
以下の表は、統計コンポーネントでサポートされている統計について説明しています。すべての統計がすべてのフィールドタイプでサポートされているわけではなく、すべての統計がデフォルトで計算されるわけではありません(詳細については、以下の統計コンポーネントでのローカルパラメーターを参照してください)
min
-
セット内のすべてのドキュメントにおけるフィールド/関数の最小値。この統計は、すべてのフィールドタイプに対して計算され、デフォルトで計算されます。
max
-
セット内のすべてのドキュメントにおけるフィールド/関数の最大値。この統計は、すべてのフィールドタイプに対して計算され、デフォルトで計算されます。
sum
-
セット内のすべてのドキュメントにおける、フィールド/関数のすべての値の合計。この統計は、数値型および日付型のフィールドに対して計算され、デフォルトで計算されます。
件数
-
このフィールド/関数に対して、セット内のすべてのドキュメントで見つかった値の数。この統計は、すべてのフィールド型に対して計算され、デフォルトで計算されます。
欠損
-
このフィールド/関数の値を持たないセット内のドキュメントの数。この統計は、すべてのフィールド型に対して計算され、デフォルトで計算されます。
二乗和
-
すべての値の二乗の合計(標準偏差を計算する際の副産物)。この統計は、数値型および日付型のフィールドに対して計算され、デフォルトで計算されます。
平均
-
平均値
(v1 + v2 …. + vN)/N
。この統計は、数値型および日付型のフィールドに対して計算され、デフォルトで計算されます。 標準偏差
-
データセット内の値がどれだけ広く分散しているかを測定する標準偏差。この統計は、数値型および日付型のフィールドに対して計算され、デフォルトで計算されます。
パーセンタイル
-
1,99,99.9
などの、パラメーター値で指定されたカットオフポイントに基づくパーセンタイル値のリスト。これらの値は、t-digestアルゴリズムを使用した近似値です。この統計は、数値型のフィールドに対して計算され、デフォルトでは計算されません。 個別値
-
セット内のすべてのドキュメントにおける、フィールド/関数のすべての個別値のセット。この計算は、カーディナリティが非常に小さいフィールドには非常にコストがかかる場合があります。この統計は、すべてのフィールド型に対して計算されますが、デフォルトでは計算されません。
個別件数
-
セット内のすべてのドキュメントにおける、フィールド/関数内の個別値の正確な数。この計算は、カーディナリティが非常に小さいフィールドには非常にコストがかかる場合があります。この統計は、すべてのフィールド型に対して計算されますが、デフォルトでは計算されません。
カーディナリティ
-
セット内のすべてのドキュメントにおける、フィールド/関数内の個別値の数の統計的近似値(現在、HyperLogLogアルゴリズムを使用)。この計算は、
countDistinct
オプションを使用するよりもはるかに効率的ですが、100%正確ではない可能性があります。このオプションへの入力は、アルゴリズムがどの程度正確にしようとするかを示す、
0.0
から1.0
の間の浮動小数点数です。0.0
は、可能な限りメモリを少なく使用することを意味し、1.0
は、可能な限り正確であるために必要なだけメモリを使用することを意味します。true
は0.3
のエイリアスとしてサポートされています。この統計は、すべてのフィールド型に対して計算されますが、デフォルトでは計算されません。
Statsコンポーネントでのローカルパラメーター
ファセットコンポーネントと同様に、stats.field
パラメーターは、ローカルパラメーターをサポートします。
-
フィルターのタグ付けと除外:
stats.field={!ex=filterA}price
-
出力キーの変更:
stats.field={!key=my_price_stats}price
-
facet.pivot
での使用のために統計にタグ付け:stats.field={!tag=my_pivot_stats}price
ローカルパラメーターを使用して、個々の統計を名前で指定し、デフォルトで計算される統計のセットをオーバーライドすることもできます。たとえば、stats.field={!min=true max=true percentiles='99,99.9,99.99'}price
です。
ローカルパラメーターを介してサポートされている統計が指定された場合、デフォルトの統計のセット全体がオーバーライドされ、リクエストされた統計のみが計算されます。 |
一部の統計の動作に影響を与えるために、追加の「エキスパート」ローカルパラメーターが一部の場合にサポートされています。
-
パーセンタイル
-
tdigestCompression
- T-Digestの圧縮率を制御する、デフォルト値が100.0
の正の数値。値が大きいほど精度が高くなりますが、より多くのメモリを使用します。
-
-
カーディナリティ
-
hllPreHashed
- インデックス時にすでにハッシュされている「long」フィールドに対して統計が計算されていることを示すブール値オプション。これにより、HLL計算はこのステップをスキップできます。 -
hllLog2m
- 使用する明示的な「log2m」値を指定する整数値。カーディナリティローカルパラメーターとフィールド型によって決定されるヒューリスティック値をオーバーライドします。詳細については、java-hllのドキュメントを参照してください -
hllRegwidth
- 使用する明示的な「regwidth」値を指定する整数値。カーディナリティローカルパラメーターとフィールド型によって決定されるヒューリスティック値をオーバーライドします。詳細については、java-hllのドキュメントを参照してください
-
ローカルパラメーターの例
ここでは、価格フィールドの統計を計算します。在庫があるすべての製品(q=:
およびfq=inStock:true
)に対して、最小値、最大値、平均値、90パーセンタイル、および99パーセンタイルの価格値が計算され、そのフィルターを除外することで、在庫があるかどうかに関係なく、すべての製品に対して独立してデフォルトの統計が計算されます。
https://127.0.0.1:8983/solr/techproducts/select?q=*:*&fq={!tag=stock_check}inStock:true&stats=true&stats.field={!ex=stock_check+key=instock_prices+min=true+max=true+mean=true+percentiles='90,99'}price&stats.field={!key=all_prices}price&rows=0&indent=true&wt=xml
<lst name="stats">
<lst name="stats_fields">
<lst name="instock_prices">
<double name="min">0.0</double>
<double name="max">2199.0</double>
<double name="mean">328.20437693595886</double>
<lst name="percentiles">
<double name="90.0">564.9700012207031</double>
<double name="99.0">1966.6484985351556</double>
</lst>
</lst>
<lst name="all_prices">
<double name="min">0.0</double>
<double name="max">2199.0</double>
<long name="count">12</long>
<long name="missing">5</long>
<double name="sum">4089.880027770996</double>
<double name="sumOfSquares">5385249.921747174</double>
<double name="mean">340.823335647583</double>
<double name="stddev">602.3683083752779</double>
</lst>
</lst>
</lst>
Statsコンポーネントとファセット
ピボットファセットを使用する場合、stats.field
パラメーターのセットは、ピボット制約のツリーのすべてのレベル(つまり、フィールド)で複数の統計を計算するために、tag
によって参照できます。
詳細と詳細な例については、Statsコンポーネントとピボットの組み合わせを参照してください。