我正在使用Solr 4.0
。我有大约100多万条记录。
解释我的问题的最好方法是通过一个例子 -
考虑我的架构中有两个字段名称和类型(type是facet)。
我有4条记录 -
name type
stackoverflow Knowledge markets
meta stackoverflow Knowledge markets
ask ubuntu Knowledge markets
programmers Q&A for programmers
现在,当Solr
查询q=name:*stack*
时,前{2}条记录的facet
type
Knowledge markets
计数为Knowledge markets
。
然后,我必须获得facet中的最高计数,在本例中为Solr
,再次q=type:Knowledge markets
ask ubuntu
,忽略第一个查询中出现的记录。因此{{1}}会显示在推荐部分中。
是否可以在1个查询中执行上述操作?
答案 0 :(得分:1)
我不知道这是否仅在单个查询中是可行的,因为您需要先确定分面结果,然后才能查询它。一种可能的选择是最初执行仅分面查询以获得最高分面计数,然后运行辅助查询。
首先查询&q=name:*stack*&rows=0&facet.field=type&facet.limit=1
,其中rows=0
选项不会返回任何搜索结果,只有facets和facet.limit=1
只会返回一个结果,这应该是最高值。
然后,您可以运行第二个查询以获取与所选类型关联的所有名称。
修改强>
经过Junaid的进一步澄清后发现原始结果仍然需要,所以我上面列出的内容仅适用于获得方面结果。以下应该有效:
首先获取q=name:*stack*
的数据并获得最高的facet值。然后运行另一个查询,如q=type:Knowledge markets AND -name:*stack*
,以获取建议的类型结果值,但过滤掉第一个查询中的名称值。