Implementing Tagging and Excluding Filters with Solrj / Spring Data Solr

倖福魔咒の 提交于 2019-12-20 02:34:54

问题


I am trying to implement a Solr Facet search with multi-select on a field. To take this example: http://docs.lucidworks.com/display/solr/Faceting#Faceting-LocalParametersforFaceting, I would like to generate this call to solr:

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype

I am not sure how to call this using solrj (java) as I don't want to add a simple filed but I need to include the tagging and excluding (!tag=dt and !ex=dt). Any ideas what the java code should look like?

I am using Spring-Data-Solr which seems to be too basic to make such an advance call. So I think I need to go a level lower and use solrj. Either solution would be great (solrj or spring-data-solr)


回答1:


The following block should create the querystring you want.

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);



回答2:


With link I can do this :-

ModifiableSolrParams params = new ModifiableSolrParams();
params.add("fq", "{!tag=dt}doctype:pdf");
params.add("facet.field", "{!ex=dt}doctype");


来源:https://stackoverflow.com/questions/16897586/implementing-tagging-and-excluding-filters-with-solrj-spring-data-solr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!