Java 如何使用SpringDataSolr构建FacetQuery,它从solr索引返回所有文档(*:*)

Java 如何使用SpringDataSolr构建FacetQuery,它从solr索引返回所有文档(*:*),java,spring,solr,solrj,spring-data-solr,Java,Spring,Solr,Solrj,Spring Data Solr,我想写一个FacetQuery,除了一个过滤条件(fq)之外,它可能没有任何条件。下面的查询是我想使用SpringDataSolrAPI构建的一个示例 http://localhost:8983/solr/jpevents/select?q=*:*&fq=categoryIds:(1101)&facet=true&facet.mincount=1&facet.limit=1&facet.field=primaryCategoryId 如何在FacetQu

我想写一个FacetQuery,除了一个过滤条件(fq)之外,它可能没有任何条件。下面的查询是我想使用SpringDataSolrAPI构建的一个示例

http://localhost:8983/solr/jpevents/select?q=*:*&fq=categoryIds:(1101)&facet=true&facet.mincount=1&facet.limit=1&facet.field=primaryCategoryId
如何在FacetQuery中设置查询参数(q=*:*)


环境:我正在编写一个基于Spring MVC的搜索API,使用Spring data solr 1.0.0.RELEASE以及solr 4.4.0和Spring 3.2.4.RELEASE。

您可以结合
@Query
@Facet

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

我做过这样的事情:

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

谢谢@Christoph Strobl的建议。我更喜欢第二种方法,因为我正在设置许多其他动态参数。但是我在SpringDataSolr1.0.0.0版本中找不到SimpleStringCritieria类。你能给我指出正确的班级吗?或者你能告诉我我遗漏了一些琐碎的东西吗?无论哪种情况,您的反馈都将非常感谢。哦,很抱歉,这个问题是由于打字错误造成的,我刚刚找到了正确的类,我现在正在尝试这种方法:)
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