如何在使用java的solr查询中进行每个字段的最小计数?

时间:2016-09-09 18:23:08

标签: solr solrj

在solr文件中写道: facet.mincount参数指定构面字段包含在响应中所需的最小计数。如果字段的计数低于最小值,则不返回字段的方面。 默认值为0。 此参数可以基于每个字段指定,语法为 f.fieldname.facet.mincount。

如何在java中执行此操作?我没有看到仅针对整个查询的字段的query.setMinCount。

http://docs.spring.io/spring-data/solr/docs/current/api/org/springframework/data/solr/core/query/FacetOptions.html

1 个答案:

答案 0 :(得分:2)

在java中,我习惯直接使用SolrJ,没有Spring或其他框架。

我建议使用SolrQuery,这是通常用于准备查询参数的类。

正如您所看到的,在准备Solr查询时有许多参数,但即使使用SolrJ,并非所有参数都具有等效方法。

鉴于此,f.fieldname.facet.mincount参数没有方法。

SolrQuery有一个由其父add继承的方法ModifiableSolrParams。您可以使用此方法找出标准SolrQuery接口未处理的每个案例。

例如,此查询添加:

SolrQuery q = new SolrQuery()
q.setQuery("*:*")
q.setFacet(true);
q.addFacetField("country");
q.add("f.country.facet.mincount", "1");

考虑一下,如果需要,您甚至可以只使用add方法:

SolrQuery q = new SolrQuery()
q.add("q", "*:*")
q.add("facet", "true");
q.add("facet.field", "country");
q.add("f.country.facet.mincount", "1");

另一方面,如果你想尝试使用Spring,那么,看看FacetOptions类,我看到有一个嵌套的静态类FacetOptions.FacetParameter,它有一个costructor FacetOptions.FacetParameter(String parameter, Object value),它似乎接受各种参数/值。在某种程度上,FacetParameter类似于我们在SolrJ add方法中看到的行为。