使用弹簧数据Solr的索引文件以特定集合(indexing document to a specif

2019-10-21 19:10发布

我试图索引文档到特定集合Solr中。 该集合名称为“程序”。 我使用的弹簧数据Solr的。

我正在试图保存文档时,下面的错误:

HTTP ERROR 404
Problem accessing /solr/update. 
Reason:Not Found

我的假设是,注释@SolrDocument无法识别。 弹簧数据的Solr试图发布文件到/ Solr的/更新,而应该尝试发布它/solr/program/update.However我不知道如何证明它或者修复它。

我的模式可用下面的链接:

http://<solr-host>/solr/program/schema

更新请求处理程序是在下面的链接可供选择:

http://<solr-host>/solr/program/update

弹簧配置的XML

<context:annotation-config />
<context:component-scan base-package="com.oostnet.controllers, com.oostnet.models, com.oostnet.services" />
<mvc:annotation-driven />

<solr:solr-server id="solrServer" url="http://<solr-host>/solr" />

<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
    <constructor-arg ref="solrServer" />
</bean>

<solr:repositories base-package="com.oostnet.solr.repositories" />

模型定义:

package com.oostnet.models.documents;

@SolrDocument(solrCoreName="program")
public class Program {

    @Id
    @Indexed
    private String id;
    <more variables>
}

库定义:

package com.oostnet.solr.repositories;

public interface ProgramRepository extends SolrCrudRepository<Program, String> {

}

控制器:

package com.oostnet.controllers;

public class ProgramController{
    private ProgramRepository programRepository;
    @Autowired
    public void setProgramRepository(ProgramRepository programRepository) {
        this.programRepository = programRepository;
    }
    public void createProgram(Program program) {
        programRepository.save(program);
    }
}

下面是使用的版本:

<spring.data.solr.version>1.3.2.RELEASE</spring.data.solr.version>
<spring.version>4.1.4.RELEASE</spring.version>
solr server version - solr-spec 4.10.2 

Answer 1:

在多个收集工作,你需要使下弹簧配置的多个存储库如下: -

<context:annotation-config />
<context:component-scan base-package="com.test.solr" />

<solr:solr-server id="solrServer" url="http://localhost:8983/solr" />

<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
    <constructor-arg ref="solrServerFactory" />
</bean>

<solr:repositories base-package="com.test.solr.repositories" multicore-support="true" />
<bean id="solrServerFactory"
    class="org.springframework.data.solr.server.support.MulticoreSolrServerFactory">
    <constructor-arg ref="solrServer" />
    <constructor-arg name="cores">
        <list>
            <value>program</value>
        </list>
    </constructor-arg>
</bean>


文章来源: indexing document to a specific collection using spring data solr