首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用java在solr查询中进行每个字段的面元计数?

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

Stack Overflow用户
提问于 2016-09-09 18:23:08
回答 1查看 3.5K关注 0票数 2

在solr文档中,它是这样写的: facet.mincount参数指定了响应中包含的facet字段所需的最小计数。如果字段的计数低于最小值,则不返回字段的方面。默认值为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

EN

回答 1

Stack Overflow用户

发布于 2016-09-10 22:18:08

在java中,我习惯于直接使用SolrJ,而不使用Spring或其他框架。

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

正如您已经看到的,在准备Solr查询时有许多参数,但是,即使使用SolrJ,也不是所有参数都有等效的方法。

在此情况下,没有f.fieldname.facet.mincount参数的方法。

但是SolrQuery有一个由父ModifiableSolrParams继承的方法add。您可以使用此方法找出标准SolrQuery接口未处理的每一种情况。

例如,此查询添加:

代码语言:javascript
运行
复制
SolrQuery q = new SolrQuery()
q.setQuery("*:*")
q.setFacet(true);
q.addFacetField("country");
q.add("f.country.facet.mincount", "1");

考虑到这一点,如果您愿意,您甚至可以只使用add方法:

代码语言:javascript
运行
复制
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,它有一个构造函数FacetOptions.FacetParameter(String parameter, Object value),它似乎接受各种参数/值。在某种程度上,FacetParameter类似于我们刚才在SolrJ add方法中看到的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39417624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档