我正在构建某种文件存储软件。文件元数据
使用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
有人可以解释一下为什么我可以获得字段和的统计信息OtherField
,OtherField2
但不能获得字段FileSize
和的统计信息OtherField3
吗?我完全看不出问题...