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
在执行查询 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