だから!これは私の最初の質問ですので親切にしてください;)
私はSolrを使用してきましたが、最近、セキュリティ
がほとんどhttp://HOST:PORT/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true
ないことがわかりました。したがって、ブラウザー
では、インデックスを簡単に作成および削除できます。
Solr wikiを読んで、solrconfig.xmlファイルを編集し、更新のために独自のRequestHandlerを追加しました。
<requestHandler name="/theupdate"
class="solr.XmlUpdateRequestHandler">
</requestHandler>
..デフォルトの代わりに..
<requestHandler name="/update"
class="solr.XmlUpdateRequestHandler">
</requestHandler>
そして今、(コミット前に)サーバーにドキュメントコレクションを追加すると、この例外が発生します。
org.apache.solr.client.solrj.SolrServerException: Server at http://HOST:PORT/solr returned non ok status:400, message:Missing solr core name in path
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:328)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:211)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:69)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:54)
これはインデックス作成のための私のコードです:
SolrServer server = new HttpSolrServer("http://HOST:PORT/solr");
Collection<SolrInputDocument> colection = new ArrayList<SolrInputDocument>();
SolrInputDocument solrDoc = new SolrInputDocument();
OracleCachedRowSet rsX = getDataFromDB(); // not actual line
while (rsX.next()) {
solrDoc.addField("id", rsX.getLong(1), 1.0f);
solrDoc.addField("name", rsX.getString(2), 1.0f);
colection.add(solrDoc);
}
server.add(colection); //<-- the exception is thrown here!
server.commit();
colection.clear();
注:ファイアウォールを介したSolrの保護や、私が取り組んでいるサーブレットコンテナの基本認証についても読んでいます...
前もって感謝します!