0

私はある種のファイルストレージソフトウェアを構築しています。filesizeファイルのメタデータは、 およびuserId のようなフィールドで索引付けされます。

私がやりたいことは、ユーザーが使用するスペースを計算できるようにすることです。

たとえば、ドキュメントがある場合:

  • ドキュメント ID = 1 | ユーザー ID = 1 | ファイルサイズ = 10
  • ドキュメント ID = 2 | ユーザー ID = 2 | ファイルサイズ = 5
  • ドキュメント ID = 3 | ユーザー ID = 1 | ファイルサイズ = 3

userId=1 の場合に 13MB (10+3) の結果を取得するようにクエリを実行したいと思います


FunctionQueryを実行できることを確認しましたが、探していることを実行していないようです。

グループ化された結果に対して集計関数を実行することを許可しないFieldCollapsingについても同じです。


StatsComponent もテストしましたが、不明な理由で機能しないようです。

私のスキーマには以下が含まれます:

<field name="FileSize" type="integer" indexed="false" stored="true" required="true" />
<field name="OtherField" type="sfloat" indexed="true" stored="true" required="false" />
<field name="OtherField2" type="integer" indexed="true" stored="true" required="false" multiValued="false"/>
<field name="OtherField3" type="integer" indexed="true" stored="true" required="false" multiValued="false"/>

そして、クエリを実行すると

http://mysolr:8414/solr/mycore/select/?q=docId:123
&rows=0
&stats=true
&stats.field=FileSize
&stats.field=OtherField
&stats.field=OtherField2
&stats.field=OtherField3

私は結果を返します:

<lst name="stats">
  <lst name="stats_fields">
    <null name="FileSize"/>
    <lst name="OtherField">
      <double name="min">6.0</double>
      <double name="max">6.0</double>
      <long name="count">1</long>
      <long name="missing">0</long>
      <double name="sum">6.0</double>
      <double name="sumOfSquares">36.0</double>
      <double name="mean">6.0</double>
      <double name="stddev">0.0</double>
      <lst name="facets"/>
    </lst>
    <lst name="OtherField2">
      <double name="min">0.0</double>
      <double name="max">0.0</double>
      <long name="count">1</long>
      <long name="missing">0</long>
      <double name="sum">0.0</double>
      <double name="sumOfSquares">0.0</double>
      <double name="mean">0.0</double>
      <double name="stddev">0.0</double>
      <lst name="facets"/>
    </lst>
    <null name="OtherField3"/>
  </lst>
</lst>

ご覧のとおり、私は単一のドキュメントの統計を求めています (これはあまり役に立ちませんが、デバッグには役立ちます。とにかく、それがなければq=docId:123、より良い結果は返されません)。このドキュメントの FileSize は 15 に設定されています Solr 4.1 を使用しています

フィールドとの統計を取得できるのに、フィールドOtherFieldOtherField2の統計を取得できない理由を誰か説明してもらえますか? 問題が全く見えない…FileSizeOtherField3

4

1 に答える 1

0

良いニュースです。この質問を書くことで、解決策を見つけることができました。FileSizeレガシースキーマを使用しましたが、フィールドにが含まれていることに気づきませんでしたindexed="false"。この属性をtrueに渡すと、StatsComponentはそのフィールドの統計を返します。

OtherField3しかし、とまったく同じ定義を持つフィールドについてはOtherField2、私には答えがありません

于 2013-02-19T11:01:46.090 に答える