Solr - 获取给定用户的所有“filemetadata.filesize”字段的总和

时间:2013-02-19 10:26:40

标签: solr

我正在构建某种文件存储软件。 文件元数据使用filesizeuserId等字段编制索引 在

我想做的是能够计算用户使用的空间。

例如,如果我有文件:

  • documentId = 1 | userId = 1 | fileSize = 10
  • documentId = 2 | userId = 2 | fileSize = 5
  • documentId = 3 | userId = 1 | fileSize = 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的统计信息吗?我根本没有看到这个问题......

1 个答案:

答案 0 :(得分:0)

好消息,写这个问题帮我找到了解决方案。我使用旧版架构,但没有注意到FileSize字段有indexed="false"。 将此属性传递给true会使StatsComponent返回该字段的统计信息!

但是,对于与OtherField3具有完全相同定义的字段OtherField2,我没有答案