0

我正在使用Solr 4.0. 我有大约 1+ 百万条记录。

解释我的问题的最好方法是通过一个例子 -

考虑我的架构中有两个字段名称和类型(类型是一个方面)。

我有 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计数为2。typeKnowledge markets

然后我必须在方面获得最高计数,在这种情况下,它的Knowledge markets,然后Solr再次查询q=type:Knowledge markets,忽略第一次查询中出现的记录。所以这ask ubuntu显示在建议部分。

是否可以在 1 个查询中完成上述操作?

4

1 回答 1

1

我不知道这是否仅在单个查询中可行,因为您需要在查询之前确定分面结果。一种可能的选择是最初执行仅构面查询以获得最高构面计数,然后运行辅助查询。

所以首先查询&q=name:*stack*&rows=0&facet.field=type&facet.limit=1whererows=0选项不会返回任何搜索结果,只返回 facets 并且facet.limit=1只会返回一个结果,应该是最高值。

然后,您可以运行第二个查询以获取与所选类型关联的所有名称。

编辑: 在 Junaid 进一步澄清后,原来的结果仍然需要,所以我上面列出的内容仅适用于获取方面的结果。以下应该工作:首先获取数据q=name:*stack*并获得最高方面的价值。然后运行另一个查询,例如q=type:Knowledge markets AND -name:*stack*获取推荐的类型结果值,但从第一个查询中过滤掉名称值。

于 2013-01-10T13:02:59.063 回答