1

我正在尝试将文档索引到solr中的特定集合。集合名称是'程序'。我正在使用弹簧数据solr。使用弹簧数据索引将文档索引到特定集合

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

我的假设是,注释@SolrDocument无法识别:

当试图保存文档我收到以下错误。 spring-data-solr尝试将文档发布到/ solr/update,而它应该尝试将其发布到/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 
+0

你能够访问'程序'核心管理页面吗? – sidgate 2015-02-06 10:12:05

+0

@sidgate是的。那里没有例外。我使用url http:// /solr /#/ program – Srik 2015-02-06 14:37:40

+0

访问它使用哪个版本的spring-data-solr? – Swaraj 2015-02-11 07:12:32

回答

0

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

<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> 
+0

那么你如何指定核心名称呢?在pojo add @SolrDocument(solrCoreName =“program”)上的 – lizzie 2015-04-02 09:22:54

+1

。这将从工厂收集程序收集URL。 – Swaraj 2015-04-02 10:05:24