

バッチ処理でApache Solrを利用してインデックス作成後、検索はできない。

(1) 正常時と異常時のログを比較し、下記処理ができなかったのを判明しました。  
SimplePostTool: COMMITting Solr index changes..

正常時

[code]

    ../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..
    
[/code]

異常時

[code]

    ../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
    
[/code]

(2)
[http://localhost:8983/solrにアクセスしてみたら](http://localhost:8983/solr%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%E3%82%89)、下記エラーが表示されました。

[code]

    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://
    
[/code]

(3) 空の/opt/FTS/indexerindex/index を削除してサーバー再起動後  
上記(1)(2)の問題を解決しましたが、まだ検索はできません。

(4) segments* fileは２箇所にあると判明した  
・/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インデックスディレクトリの設定やインデックスの再作成ですべての問題を解決し、  
検索できるようになりました。

手順：  
（１）solrデフォルトのインデックスディレクトリ/opt/FTS/indexerindexを削除  
（２）実インデックスディレクトリ/opt/FTS/index1へのリンクをindexerindexで作成  
（３）solr検索インデックスを再作成


CC BY-SA 3.0
2015-10-01T06:35:19.473
17137
2015-10-11T11:42:21.110
2015-10-11T11:42:21.110
12546
12546
question
java solr
Apache Solr処理エラー、検索はできない


日本語は読めるんでしょうか？

恐らくこの質問と同様の問題だと思います。

<https://stackoverflow.com/questions/3938691/how-to-recover-from-solr-deleted-
index-files>

ディレクトリ `/opt/FTS/indexerindex/index`
が壊れているか空なので削除してみてください。もちろん必要な情報がある場合はバックアップを行ってください。


CC BY-SA 3.0
2015-10-01T07:00:39.477
17140
2015-10-01T07:00:39.477
2017-05-23T12:38:56.083
-1
3271
17137
answer