【问题标题】:How can I get the size of Solr Facet results?如何获得 Solr Facet 结果的大小?
【发布时间】:2015-05-14 06:35:42
【问题描述】:

我的架构中有一个名为 XXX 的多值字段。而且我的 Solr 中可能有更多的 10,0000 个文档,我想知道 XXX 中存在多少个值而没有任何重复。

目前,我使用 facet.field=XXX&facet.limit=-1 来获取构面结果大小。会耗费大量时间,有时会出现Read Timeout。

分面结果我想要的只是“大小”,我不在乎内容。

顺便说一句,我使用的是 Solr 5.0,还有其他更好的解决方案来解决我的需求吗?

【问题讨论】:

标签: java solr facet


【解决方案1】:

索引确实维护了一个唯一术语列表,因为倒排索引就是这样工作的。与分面不同,它的计算和返回速度也非常快。如果您的价值观是单一术语,那么这可能是获得您想要的东西的一种方式。鉴于在您的 solrconfig.xml 中启用了 TermsComponent,有一种方法可以获得唯一的术语。例如:

http://localhost:8983/solr/corename/terms?q=*%3A*&wt=json&indent=true&terms=true&terms.fl=XXX

将返回所有唯一术语及其计数的列表:

{
  "responseHeader":{
  "status":0,
  "QTime":0},
  "terms":{
    "XXX":[
    "John Backus",3,
    "Ada Lovelace",3,
    "Charles Babbage",2,
    "John Mauchly",1,
    "Alan Turing",1
    ]
  }
}

此列表的长度是唯一术语的数量,在示例中为 5。不幸的是,API 没有提供一种仅询问计数而不返回术语列表的方法,因此虽然它有生成列表的速度优势,返回完整列表所需的时间量使其具有与构面方法类似的缺点。此外,返回的列表可能会变得很长。

查看https://wiki.apache.org/solr/TermsComponent 了解 API 详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多