为什么弹簧数据solr的映射速度慢?

时间:2018-04-30 21:11:47

标签: spring spring-boot solr spring-data spring-data-solr

说我有solrdocument的以下课程

@SolrDocument(solrCoreName="some_core")
public class SolrProduct {
    @Id
    @Indexed(name="id")
    private String id;

    @Indexed(name="title_str")
    private String title;

    ....

在数据访问层中,代码就是

public interface ProductRepository extends SolrCrudRepository <SolrProduct, Long> {

    public Page<SolrProduct> findByTitle(String title, Pageable page);

    public List<SolrProduct> findByTitle(String title);

}

在服务层,当我打电话

productService.findByTitle("computer", new PageRequest(0, 10));

这很好,因为我只得到了10个结果。但是,如果我打电话

productService.findByTitle("computer");

加载需要一分多钟,因为有10,000多个具有computer标题的solr产品。

solr数据中存在很多其他字段,这些字段在我创建的solrdocument POJO类中不存在,所以我猜测字段的映射需要一些时间。它是否正确?或者只是在通话期间加载大量数据?有什么方法可以加快速度吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您在solr文档中存储了许多字段,但是只有一小部分被映射到java文档? 如果为s,则可以限制从solr返回的文件名:

query.addProjectionOnField("myfield1");
....
query.addProjectionOnField("myfieldn");

Documentation

这应该保存从服务器传输的数据,不确定是否可以加快映射速度。