DataImportHandlerを使用してxmlファイルをSolr 6.2.1に索引付けしようとしています。そのためにApache Solr DataImportHandlerが索引作成に失敗しました
私はsolrconfig.xmlに必要なインポートおよびこの要請ハンドラを追加しました:
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler" startup="lazy">
<lst name="default">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
は、それから私は、データ-config.xmlが書いたとsolrconfig.xmlと同じパスに入れて:
<dataConfig>
<dataSource type="FileDataSource" encoding="UTF-8"/>
<document>
<entity name="pickupdir"
processor="FileListEntityProcessor"
dataSource="null"
baseDir="/vagrant/TREC8all/Adhoc/"
recursive="true"
fileName="^[\w\d-]+\.xml$" />
<entity name="trec8_simple"
processor="XPathEntityProcessor"
stream="true"
datasource="pickupdir"
url="${pickupdir.fileAbsolutePath}"
forEach="/DOCS/DOC">
<field column="id" xpath="/DOCS/DOC/DOCNO"/>
<field column="header" xpath="/DOCS/DOC/HEADER"/>
<field column="text" xpath="/DOCS/DOC/TEXT"/>
</entity>
</document>
</dataConfig>
これはImportHandlerは彼らがのXPathによると、ディレクトリおよびインデックス内のすべてのXMLファイルを再帰的に反復処理するべきです。私はこのような要請ハンドラを呼び出すと
:
ERROR (Thread-14) [ x:trec8] o.a.s.h.d.DataImporter Full Import failed:java.lang.NullPointerException
at org.apache.solr.handler.dataimport.DataImporter.createPropertyWriter(DataImporter.java:325)
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:412)
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:475)
at org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:458)
at java.lang.Thread.run(Thread.java:745)
:
http://192.168.155.156:8983/solr/trec8/dataimport?command=full-import&entity=trec8_simple
私はsolr.logでこの例外を取得しています(私の代わりに、ローカルの放浪ボックス内のSolrを実行しています)イムは、これがDataImportHandlerのソースであるべきと仮定:
この例外を引き起こしていることとその意味を理解することができません。誰かが私を助けることができればいいだろう。ありがとう!
EDIT: これは、DataImportHandlerがdata-config.xmlを見つけることができないと考えていると思います。私はそれを削除すると全く同じ例外がスローされます