2016-11-23 15 views
1

solrリポジトリを使用するSpringBootアプリケーションを作成しようとしています。私はそれがあることを行う場合には問題があるJavaConfigを使用したSpringデータSolrリポジトリ

@Configuration 
@EnableSolrRepositories 
class ApplicationConfig { 

    @Bean 
    public SolrClient solrClient() { 
    EmbeddedSolrServerFactory factory = new EmbeddedSolrServerFactory("classpath:com/acme/solr"); 
    return factory.getSolrServer(); // getSolrServer does not exist 
    } 

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

http://docs.spring.io/spring-data/solr/docs/current/reference/html/#solr.repositories

次のクラス(例43)で自分のアプリケーションを設定するには言う:私はこのチュートリアルを以下のよfactoryの方法としてgetSolrServer()を認識しません。実際にEmbeddedSolrServerFactorymost recent APIを見ると、そのメソッドは見つかりませんが、明らかに同じクラスのprevious versionに存在しています。

多分、getSolrServerからgetSolrClientにバージョンが変更されたのでしょうか。

はここでとにかくのpom.xml

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-solr</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

の私の依存関係だ、私はgetSolrClientgetSolrServerを変更しようとしましたが、戻り値の型、すなわちSolrClient、今互換性がありません。私はorg.apache.solr.client.solrj.embedded.EmbeddedSolrServerを返却しようとした場合、それはorg.apache.solr.client.solrj.embedded ...

SolrTemplateEmbeddedSolrServerを必要としないことになり、これを使用して別の問題なので、これは良い選択肢ではない見つけることができなかったので、それは私にエラーを与えます。..

+0

"spring-boot-starter-data-solr"のバージョンは何ですか? –

+0

@ ShivaKumarSSバージョンは指定されていませんので、最新のものと思われます。 – nbro

答えて

0

私はspringスイートではなくeclipseを使用しています。最新バージョンのspring-boot-starter-data-solr (1.4.2)を使用していることを前提としており、あなたのpomにはsolr-core 5.xのエントリを追加する必要があります。

EmbeddedSolrServerは、SolrClientに拡張されているため、Java IS-Aの関係に従っており、SolrClientと互換性があります。このバイナリはsolr-coreの一部です。

あなたのコードはgetSolrClient自体を使用する必要があり、それはのpom.xmlにSolrClient

依存関係と互換性があります私たちは一緒に行くここで

enter image description here

を以下のようですコードベースにエラーなし。代わりSolrClient Beanを作成する

enter image description here

+0

私はSpringスイートを使用していません.pom.xmlの依存関係を指定するだけです。 – nbro

+0

pom.xmlエントリで私の答えを編集しました。あなたはそれを試すことができますか? –

+0

あなたが提案しているバージョンを使って、私は 'getSolrServer'メソッドを持っていますが、' SolrTemplate'は 'SolrClient'を必要としないのでエラーです。 – nbro

0

、EmbeddedSolrServerFactoryBeanオブジェクトを作成し、SolrTemplateオブジェクトを作成するためにSolrのテンプレートにそのオブジェクトを渡します。ここに私の設定ファイルである:また

@Configuration 
@EnableSolrRepositories(basePackages = "com.ida.*.repository") 
@Profile("dev") 
public class SolrConfigDev { 
    @Autowired 
    private Environment environment; 

    @Bean 
    public EmbeddedSolrServerFactoryBean solrServerFactoryBean() { 
     EmbeddedSolrServerFactoryBean factory = new EmbeddedSolrServerFactoryBean(); 

     factory.setSolrHome(environment.getRequiredProperty("solr.solr.home")); 

     return factory; 
    } 

    @Bean 
    public SolrTemplate solrTemplate() throws Exception { 
     return new SolrTemplate(solrServerFactoryBean().getObject()); 
    } 
} 

が、あなたはあなたにのpom.xmlファイルをSolrのコアを追加する必要があります。このトピックに関する

<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-core</artifactId> 
    <version>5.5.3</version> 
</dependency> 

詳しい情報は、ペトリKainulainenで、このブログでhereを見つけることができます。

関連する問題