5

Solrjを使用して、特にSolrインデックスに接続しようとしていEmbeddedSolrServerます。私のsolr.xml見た目は次のようになります:

<solr>  
  <cores adminPath="/admin/cores" defaultCoreName="db">
        <core default="true" instanceDir="../db/" name="db"/>
  </cores>
</solr>

サーバーに対してクエリコマンドを実行する場合

CoreContainer coreContainer = new CoreContainer("C:\\development\\solr-4.4.0\\example tasks\\solr");
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "db");

Collection<SolrCore> cores = coreContainer.getCores();
System.out.println(cores);


SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.addFacetField("taskType", "taskName");
QueryResponse rsp = server.query(query);

次の例外が発生します。

Exception in thread "main" org.apache.solr.common.SolrException: No such core: db

コアはそこにあり、 Jetty と同じファイルdbを使用して Solr を起動すると、すべてが完璧に機能します。solr.xml

4

3 に答える 3

4

コメントの後に編集:

load()バージョン 4.4.0 では、関数を使用してコアをロードする必要があります。

CoreContainer coreContainer = new CoreContainer("C:\\development\\solr-4.4.0\\example tasks\\solr");
container.load();

EmbeddedSolrSever の solr wiki をまだご覧になっていない場合は、ぜひご覧ください。

問題が解決することを願っています。

于 2013-09-21T18:29:36.630 に答える
0

Solr 4.4 以降では、コア ディレクトリと core.properties ファイルの検出を使用する代替のコア定義方法があります。このメソッドは、Solr 5.0 以降では必須です。

注: solr.xml のコア定義を新しいメソッドに移行する必要があります。詳細については、Solr.xml 4.4 以降を参照してください。

于 2015-06-10T09:13:29.850 に答える