2013-02-19 68 views
0

我正在构建某种文件存储软件。 该文件的元数据进行索引与领域,如filesizeuserIdSolr - 获取给定用户的所有“filemetadata.filesize”字段的总和

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

对于为例,如果我有证件:

  • documentId = 1 | userId = 1 | fileSize = 10
  • documentId = 2 | userId = 2 | fileSize = 5
  • documentId = 3 | userId = 1 |档案大小= 3

我想运行一个查询,以便为用户id = 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它不会返回我更好的结果)。 该文件有15 一组文件大小我使用Solr的4.1

能有人请解释我为什么可以得到场OtherFieldOtherField2统计数据,而不是场FileSizeOtherField3?我根本没有看到问题...

+0

重新StatsComponent - 为什么你有Q =的docId:123?不应该是q = userId:1而是? – 2013-02-19 11:20:27

+0

在我的最后一个查询中,是的,但是为了帮助调试直接在docId上过滤掉 – 2013-02-19 11:39:43

回答

0

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

然而,对于具有完全相同的定义OtherField2领域OtherField3,我没有答案

相关问题