SOLR - 查询Facets,每个Facet返回N个结果

时间:2014-06-03 15:49:39

标签: solr

我在SOLR索引中存储了大量文档。我想执行一个返回指定字段的Facet计数的查询,并返回每个Facet字段的前100个文档。

例如。我们假设我的SOLR索引中存有大量书籍。

{ name: "Book 1", genre: "Mystery" },
{ name: "Book 2", genre: "Science Fiction" },
{ name: "Book 3", genre: "Romance" },
{ name: "Book 4", genre: "Mystery" }

现在,我想在一个字段上指定一个Faceted查询,在本例中,是一本书的类型。 facet=true&facet.field=genre。此搜索结果可能类似于:

 "facet_fields":{
    "genre":[
       "Mystery",503322,
       "Science Fiction",40759,
       "Romance",23987
    ]
 }

这给了我与每种类型相匹配的书籍数量。如果我要在查询中添加rows参数,则只会返回与查询匹配的前N个书籍。

但是,我想更进一步。我希望SOLR能够将符合我查询的每种类型的前100本书归还给我。这意味着,由于返回了3个方面字段(神秘,科幻和浪漫),此搜索可能最多返回300个文档。

如果可能的话,我希望在一个查询中执行所有操作。我能够这样做吗?我需要多次查询SOLR才能获得我想要的内容吗?如果是这样,建议的方法是什么,以获得我想要的东西?

我对SOLR很新,只是试图掌握SOLR是什么而且不具备的能力。

1 个答案:

答案 0 :(得分:3)

查看Solr中的group option。例如,要获取每个genre的前100个文档,您将使用group=true&group.field=genre&group.limit=100