gpt4 book ai didi

java - Spring data solr HttpSolrClient 不使用来自实体的核心注释

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:18 26 4
gpt4 key购买 nike

配置如下

@Configuration
@EnableSolrRepositories(basePackages={"com.foo"}, multicoreSupport=true)
public class SolrConfig {

@Value("${solr.host}") String solrHost;

@Bean
public SolrClient solrClient() {
return new HttpSolrClient(solrHost);
}

@Bean
public SolrTemplate solrTemplate() {
return new SolrTemplate(solrClient());
}
}

我有一个简单的实体:

@SolrDocument(solrCoreName = "core1")
public class MyEntity implements Serializable {

如果使用 SolrTemplate 执行查询,它不会在文档上使用 coreName 注释:

Page results = solrTemplate.queryForPage(search, MyEntity.class);

我得到异常:

org.springframework.data.solr.UncategorizedSolrException: Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html.
[..]
Problem accessing /solr/select
[...]
<title>Error 404 Not Found</title>

将 SolrTemplate bean 更改为:

@Bean
public SolrTemplate solrTemplate() {
return new SolrTemplate(solrClient(), "core1");
}

作品

最佳答案

spring-data 的人确认这是预期的行为,模板不会从实体注释中读取核心。
所以在 multicoreSupport=true 环境中,如果你想同时使用存储库和模板,你必须创建 2 个 bean:对于存储库,基本模板:

    @Bean
public SolrTemplate solrTemplate() {
return new SolrTemplate(solrClient());
}

并且为了注入(inject)你将有另一个:

    @Bean
public SolrTemplate customTemplate() {
return new SolrTemplate(solrClient(), "core1");
}

显然,如果您不需要 multicoreSupport=true,则不需要!

关于java - Spring data solr HttpSolrClient 不使用来自实体的核心注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com