如何使用spring-data-solr编写查询,返回特定字段

时间:2017-11-07 07:47:57

标签: java solr solrj spring-data-solr

我想编写一个查询,获取文档中一个字段的所有值的列表(根本没有条件)。 我尝试以下代码:

@Query(fields = { "car_company_s" })
List<Car> findAllCarCompeny();

但它没有用,我收到了以下错误:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAllCarCompeny found for type Car!

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您想要的是"Term"。基本上,它返回一个字段的所有值。如description中所述,您需要solr模板。 我们使用的示例:

    @Resource
    private SolrTemplate solrTemplate;
    ...     
    query = SimpleTermsQuery.queryBuilder()
                .fields(key)
                .prefix(startsWith.toLowerCase(Locale.ROOT)) // we have some search prefix
                .sort(TermsOptions.Sort.INDEX)
                .build();

    TermsPage page = solrTemplate.queryForTermsPage(query);
    Iterable<TermsFieldEntry> terms = page.getTermsForField(key);

术语基本上就是您的价值观。请注意,您必须优化核心以删除已删除文档中的值。