Search code examples
javaspringsolrsolrjspring-data-solr

How to build FacetQuery using spring-data-solr which returns all documents (*:*) from solr index


I want to write a FacetQuery which may not have any criteria except one filter condition (fq). Following query is an example which I want to build using spring-data-solr API.

http://localhost:8983/solr/jpevents/select?q=*:*&fq=categoryIds:(1101)&facet=true&facet.mincount=1&facet.limit=1&facet.field=primaryCategoryId

How can I set query parameter (q=*:*) in FacetQuery?

Environment: I'm writing a Spring MVC based Search API using spring-data-solr 1.0.0.RELEASE with Solr 4.4.0 and Spring 3.2.4.RELEASE.


Solution

  • you can do this combining @Query and @Facet

        @Facet(fields={"primaryCategoryId"}, minCount=1, limit=1)
        @Query(value="*:*", filters="categoryIds:(?0)")
        public FacetPage<JPEvents> XYZ(List<Long> categories, Pageable page);
    

    or execute FacetQuery using SolrTemplate.

       FacetQuery query = new SimpleFacetQuery(new SimpleStringCriteria("*:*"))
         .setFacetOptions(new FacetOptions("primaryCategoryId")
         .setFacetMinCount(1).setFacetLimit(1));
       query.setPageRequest(pageable);
       solrTemplate.queryForFacetPage(query, JPEvents.class);