1

だから!これは私の最初の質問ですので親切にしてください;)

私は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の保護や、私が取り組んでいるサーブレットコンテナの基本認証についても読んでいます...

前もって感謝します!

4

1 に答える 1

0

HttpSolrServerで使用可能なaddメソッドとSolrJライブラリのSolrServerで使用できるさまざまなメソッドを調べてきましたが、残念ながら、updateHandlerのSolrJで別の名前をオーバーライドまたは指定できる場所はありません。それはそれが経由で利用可能になることを前提としていますhttp://HOST:PORT/solr/update

于 2012-10-26T11:56:21.757 に答える