首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Solrj / Spring Data Solr实现标记和排除过滤器

使用Solrj / Spring Data Solr实现标记和排除过滤器
EN

Stack Overflow用户
提问于 2013-06-03 21:13:17
回答 3查看 2.1K关注 0票数 3

我正在尝试在一个字段上实现一个多选的Solr Facet搜索。举个例子:http://docs.lucidworks.com/display/solr/Faceting#Faceting-LocalParametersforFaceting,我想生成对solr的调用:

代码语言:javascript
复制
q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype

我不确定如何使用solrj (java)调用它,因为我不想添加一个简单的字段,但我需要包括标记和排除(!tag=dt和!ex=dt)。你知道java代码应该是什么样子的吗?

我正在使用Spring-Data-Solr,它似乎太基础了,不能进行这样的提前调用。所以我认为我需要更低的级别,并使用solrj。任何一种解决方案都很好(solrj或spring-data-solr)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-04 02:57:14

下面的代码块应该会创建您想要的查询字符串。

代码语言:javascript
复制
SimpleFacetQuery query = new SimpleFacetQuery(new SimpleStringCriteria("mainquery"))
  .addFilterQuery(new SimpleQuery(new Criteria("status").is("public")))
  .addFilterQuery(new SimpleQuery(new Criteria("{!tag=dt}doctype").is("pdf")));
query.setFacetOptions(new FacetOptions("{!ex=dt}doctype"));

solrTemplate.queryForFacetPage(query, YourBean.class);
票数 4
EN

Stack Overflow用户

发布于 2013-06-03 21:28:59

使用link我可以做到这一点:

代码语言:javascript
复制
ModifiableSolrParams params = new ModifiableSolrParams();
params.add("fq", "{!tag=dt}doctype:pdf");
params.add("facet.field", "{!ex=dt}doctype");
票数 2
EN

Stack Overflow用户

发布于 2021-03-31 04:56:19

使用SolrQuery (它是另一个答案中ModifiableSolrParams的子类):

代码语言:javascript
复制
solrQuery.addFilterQyery("{!tag=dt}doctype:pdf");
solrQuery.addFacetField("{!ex=dt}doctype");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16897586

复制
相关文章

相似问题

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