Solr - 如何 return 最频繁的查询条件

Solr - how to return most frequent terms of a query

在执行查询 name:*b* AND country:China(名称包含 'b')时,我希望 solr return 每个不同术语的人数(来自中国)

Documents(name are whitespace delimiter toknized):
[ 
{name: 'sponge bob'},
{name: 'billy chen'},
{name: 'abie white'}
]

预期结果

[
{term: 'bob', matches: 100},
{term: 'billy', matches: 90},
{term: 'abie', matches: 80}
]

尝试:分面搜索

我尝试像 q=name:*b*+%3AAND+%3Acountry:China&facet=on&facet.field=name

这样的查询

结果包括不相关的术语

[sponge,1, bob, 1, ...]

我怎么能使用不相关的术语,例如 sponge

我不确定我是否正确理解了您的用例,但 TermsComponent 可能符合您的需求。

它"provides access to the indexed terms in a field and the number of documents that match each term"(来自文档)。

在 solrconfig.xml 中配置组件后,查询应如下所示:

terms=true&terms.fl=name&terms.regex=.*b.*

最后我在这个patch的基础上修改了facet search的实现https://issues.apache.org/jira/browse/SOLR-1387,自己搭建了一个全新的solr war