2013-02-19 38 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,我沒有答案

相關問題