Solr - (RE)-Query Solr基于从第一个查询的某些字段中获取的数据

时间:2013-01-10 08:54:45

标签: solr lucene solrj

我正在使用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个查询中执行上述操作?

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*,以获取建议的类型结果值,但过滤掉第一个查询中的名称值。