3

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

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)

4

3 回答 3

4

以下块应创建您想要的查询字符串。

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);
于 2013-06-03T18:57:14.263 回答
2

通过链接我可以做到这一点: -

ModifiableSolrParams params = new ModifiableSolrParams();
params.add("fq", "{!tag=dt}doctype:pdf");
params.add("facet.field", "{!ex=dt}doctype");
于 2013-06-03T13:28:59.490 回答
0

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

solrQuery.addFilterQyery("{!tag=dt}doctype:pdf");
solrQuery.addFacetField("{!ex=dt}doctype");
于 2021-03-30T20:56:19.213 回答