我正在構建某種文件存儲軟件。 該文件的元數據進行索引與領域,如filesize
和userId
的Solr - 獲取給定用戶的所有「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
能有人請解釋我爲什麼可以得到場OtherField
和OtherField2
統計數據,而不是場FileSize
和OtherField3
?我根本沒有看到問題...
重新StatsComponent - 爲什麼你有Q =的docId:123?不應該是q = userId:1而是? – 2013-02-19 11:20:27
在我的最後一個查詢中,是的,但是爲了幫助調試直接在docId上過濾掉 – 2013-02-19 11:39:43