1

我有一个 Solr 解决方案需要两个查询,但我正在寻找一种在单个查询中完成它的方法。我的想法是,如果我能找到一种方法来做到这一点,我就不必承担 Solr 集群上两倍负载的开销。

详细信息:我正在运行一个简单的查询,如“q=camera”,查询过滤器为“fq=type:digital”。第二个查询与第一个查询相同,但过滤器是相反的,例如“fq=-type:digital” topDocs,然后使用第二个过滤器生成第二个集合,结果可以合并并返回(排序是否采用和混合这两个集合并不重要)。

我尝试通过在索引期间标记特定字段来将数据划分为两个不同的组,然后使用 Solr“分组”查询,但这些响应时间在我的设置中是不可接受的。

我正在寻找与 Solr 最一致的实验方法的建议:调整以提高两个查询解决方案的性能,或研究一种自定义 Solr 后过滤器(我阅读了 Yonik 的 2/2012 博客文章)。

我必须在 Solr 3.5 中实现这一点,尽管如果在 4.0 中有灌篮解决方案,我最终将能够实现这一点。

4

2 回答 2

1

I can think of two alternate approaches :-

  1. Instead of filter the results, use a variable higher boost so that all the results for type:digital come on top and rest of the documents would follow. No need for separate queries. The boost can be changes as per the type value.

  2. Other approach is not to display the results for type other then digital. However, you can display the facets for the other types with the counts for the same for users to know if the other types exist for the search term. You can check on tagging and excluding filters

于 2013-02-08T04:57:20.770 回答
0

结果分组可能会给你你想要的。只需按该参数分组并指定每个组中足够多的文档数。

但我会测试它的性能是否比两个查询好。只是因为它在限制部分提到了性能。

于 2013-02-07T22:35:46.550 回答