【问题标题】:Solr - Get the sum of all "filemetadata.filesize" field for a given userSolr - 获取给定用户的所有“filemetadata.filesize”字段的总和
【发布时间】:2013-02-19 19:01:46
【问题描述】:

我正在构建某种文件存储软件。 文件元数据使用filesizeuserId 等字段进行索引

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

例如,如果我有文件:

  • documentId = 1 |用户 ID = 1 |文件大小 = 10
  • documentId = 2 |用户 ID = 2 |文件大小 = 5
  • documentId = 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 的统计信息,但不能获得字段FileSizeOtherField3 的统计信息?我根本看不到问题...

【问题讨论】:

  • 重新统计组件 - 为什么你有 q=docId:123?不应该是 q=userId:1 吗?
  • 在我的最终查询中是的,但为了帮助调试,我直接过滤了 docId

标签: solr


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 2023-01-13
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多