Apache Solr処理エラー、検索はできない
バッチ処理でApache Solrを利用してインデックス作成後、検索はできない。
(1) 正常時と異常時のログを比較し、下記処理ができなかったのを判明しました。
SimplePostTool: COMMITting Solr index changes..
正常時
../indexerdata/TargetXml/registr/JPH_XXXX/bangoxx.xml
SimplePostTool: version 1.2
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file bangoxx.xml
SimplePostTool: COMMITting Solr index changes..
異常時
../indexerdata/TargetXml/registr/JPH_XXXX/bangoxx.xml
SimplePostTool: version 1.2
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file bangoxx.xml
(2) http://localhost:8983/solrにアクセスしてみたら、下記エラーが表示されました。
HTTP ERROR: 500
Severe errors in solr configuration.
Check your log files for more detailed information on what may be wrong.
If you want solr to continue after configuration errors, change:
<abortOnConfigurationError>false</abortOnConfigurationError>
in null
-------------------------------------------------------------
java.lang.RuntimeException: java.io.FileNotFoundException: no segments* file found in org.apache.lucene.store.NIOFSDirectory@/opt/FTS/indexerindex/index: files:
at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:579)
at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:137)
at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:83)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:594)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
at org.mortbay.jetty.Server.doStart(Server.java:210)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:929)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mortbay.start.Main.invokeMain(Main.java:183)
at org.mortbay.start.Main.start(Main.java:497)
at org.mortbay.start.Main.main(Main.java:115)
Caused by: java.io.FileNotFoundException: no segments* file found in org.apache.lucene.store.NIOFSDirectory@/opt/FTS/indexerindex/index: files:
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:634)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:69)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:476)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:403)
at org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:38)
at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1057)
... 27 more
RequestURI=/solr/admin/
Powered by Jetty://
(3) 空の/opt/FTS/indexerindex/index を削除してサーバー再起動後
上記(1)(2)の問題を解決しましたが、まだ検索はできません。
(4) segments* fileは2箇所にあると判明した
・/opt/FTS/indexerindex/index/segments* ---> (3)の対応で新しく作ったもの(小さい)
・/opt/FTS/index1/index/segments* ---> 数年前に作ったもの(大きい)
(5) (4)の問題でsolr検索インデックス更新処理で新たなエラーが起こりました。
/opt/FTS/indexerindex/index/_4f.fdx 存在されていないですが・・ HTTP ERROR: 500 Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: false in null ------------------------------------------------------------- java.lang.RuntimeException: java.io.FileNotFoundException: /opt/FTS/indexerindex/index/_4f.fdx (No such file or directory) at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068) ・・・・・・ ・・・・・・
2箇所のsegments* fileを統合する必要があると思って、色々試してみました。
最終的に、
solrインデックスディレクトリの設定やインデックスの再作成ですべての問題を解決し、
検索できるようになりました。
手順:
(1)solrデフォルトのインデックスディレクトリ/opt/FTS/indexerindexを削除
(2)実インデックスディレクトリ/opt/FTS/index1へのリンクをindexerindexで作成
(3)solr検索インデックスを再作成