0

我正在构建某种文件存储软件。文件元数据 使用filesizeuserId

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

例如,如果我有文件:

  • 文档 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但不能获得字段FileSize和的统计信息OtherField3吗?我完全看不出问题...

4

1 回答 1

0

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

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

于 2013-02-19T11:01:46.090 回答