簡體   English   中英

如何使用spring-data-solr構建FacetQuery,它返回solr索引中的所有文檔(*:*)

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

我想編寫一個FacetQuery,除了一個過濾條件(fq)之外,它可能沒有任何標准。 以下查詢是我想使用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

如何在FacetQuery中設置查詢參數(q = *:*)?

環境:我正在使用帶有Solr 4.4.0和Spring 3.2.4.RELEASE的spring-data-solr 1.0.0.RELEASE編寫基於Spring MVC的Search API。

你可以把@Query@Facet結合起來

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

或執行FacetQuery使用SolrTemplate

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

我做過這樣的事情:

public static void main()
{
String url = "http://localhost:8983/solr/autocomplete";
    SolrServer solrServer = new HttpSolrServer(url);
    SolrQuery query = new SolrQuery();
    query.set("q", "*");
    query.addFilterQuery("name:*");
    query.setFacet(true);
    query.addFacetField("name");
    System.out.println(query);
    QueryResponse queryResponse = solrServer.query(query);
    List<FacetField> facetFields = queryResponse.getFacetFields();
    FacetField cnameMainFacetField = queryResponse.getFacetField("name");
    for (Count cnameAndCount : cnameMainFacetField.getValues()) {
        String cnameMain = cnameAndCount.getName();
        System.out.println(cnameMain);
        System.out.println(cnameAndCount.getCount());
    }

這給了我正確的多面字段數。 希望你能理解我在做什么。 添加輸出以便更好地理解:

q=*&fq=name%3A*&facet=true&facet.field=name
a
10
an
7
w
7
m
6
and
5
c
5
p
5
d
4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM