在 solr 中是否可以为单个文档索引键值对,例如:
文件编号:100
2011-05-01,20
2011-08-23,200
2011-08-30,1000
文件编号:200
2011-04-23,10
2011-04-24,100
然后在特定时间范围内查询具有特定值聚合的文档,即“在 2011-08-01 和 2011-09-01 之间给我 sum(value) > 0 的文档”将返回 id 为 100 的文档上面的示例数据。
在 solr 中是否可以为单个文档索引键值对,例如:
文件编号:100
2011-05-01,20
2011-08-23,200
2011-08-30,1000
文件编号:200
2011-04-23,10
2011-04-24,100
然后在特定时间范围内查询具有特定值聚合的文档,即“在 2011-08-01 和 2011-09-01 之间给我 sum(value) > 0 的文档”将返回 id 为 100 的文档上面的示例数据。
这是Solr 用户邮件列表中的一篇文章,其中讨论了几种将字段作为键/值对处理的方法。
1)对字段值中的“id”和“label”进行编码;刻面;要求客户知道如何解码。这对于 id=>label 映射永远不会改变并且易于编码的简单事物非常有效(即“01234:Chris Hostetter”)。当 id=>label 映射确实以任何频率发生变化时,这是一种可怕的方法。
2)有一个单独类型的“元数据”文档,每个“事物”都包含 id 和标签字段(可能还有一个 doc_type 字段,以便您可以将其与主要文档区分开来)然后一旦你已经完成了您的主要查询并在 id 上返回了结果,您可以查询这些 id 以获取相应的标签。如果标签发生变化(只需重新索引相应的元数据文档),这将非常有效,并且您可以在每个文档中存储额外的元数据,并且在许多用于呈现初始“浏览”界面的用例中,您可以有时会通过廉价搜索所有元数据文档(或所有符合特定条件的元数据文档)而不是对所有主要文档进行昂贵的方面查询来逃避。