2015-05-14 28 views
0

我的架构中有一个名为XXX的多值字段。在我的Solr中可能会有更多的10,0000个文档,我想知道XXX中有多少个值不存在任何重复。我如何获得Solr Facet结果的大小?

现在,我使用facet.field = XXX & facet.limit = -1来获取构面结果大小。它会花费很多时间,有时会发生读取超时。

我想要的结果只是'大小',我不关心内容。

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

+0

我已经试过使用统计,但它是一个多值字段,所以它没有任何意义。 – user1416312

+0

与论坛网站不同,我们不使用“谢谢”,或“任何帮助表示赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 从帖子中删除)。顺便说一句,它是“提前致谢”,而不是“感谢先进”。 –

回答

0

该索引确实保留了一个唯一条目列表,因为这是倒排索引的工作原理。与刻面不同,计算和返回速度也非常快。如果你的价值观是单一的,那么这可能是达到你想要的。考虑到您的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的详细信息。