私は Java の専門家ではありませんが、Solr を使用して検索していますが、この問題について検索した後、なぜそれが起こっているのかわかりませんでした。
並べ替えなしの 3000 万件のレコード インデックスと実行できる最も軽いセットアップがありますが、いくつかのクエリの後に次の例外があります。
SEVERE: java.lang.OutOfMemoryError: org.apache.lucene.index.SegmentReader.createFakeNorms(SegmentReader.java:1117) の Java ヒープ領域 org.apache.lucene.index.SegmentReader.fakeNorms(SegmentReader.java:1125) でorg.apache.lucene.index.SegmentReader.norms(SegmentReader.java:1140) org.apache.solr.search.SolrIndexReader.norms(SolrIndexReader.java:282) org.apache.lucene.search.TermQuery$TermWeight.スコアラー(TermQuery.java:72) org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:250) org.apache.lucene.search.Searcher.search(Searcher.java:171) org.apache org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:341) org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:182) で org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195) で org.apache .solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) で org.apache.solr.core.SolrCore.execute(SolrCore.java:1317) で org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java) :338) org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) で org.apache.catalina.core. org.apache.catalina.core の ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)。org.apache の StandardWrapperValve.invoke(StandardWrapperValve.java:233)。org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) で org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) で org.apache.coyote.http11.Http11Processor .process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JioEndpoint$Worker.run(JioEndpoint.java) :489) java.lang.Thread.run(Thread.java:679) でorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) の invoke(StandardHostValve.java:127) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) の org.apache org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) の .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol .java:602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) で java.lang.Thread.run(Thread.java:679) でorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) の invoke(StandardHostValve.java:127) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) の org.apache org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) の .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol .java:602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) で java.lang.Thread.run(Thread.java:679) でorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) の connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java: 602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) で java.lang.Thread.run(Thread.java:679) でorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) の connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java: 602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) で java.lang.Thread.run(Thread.java:679) で
次に、Tomcat を再起動すると、いくつかの要求が再び落ちるまで動作に戻ります。
私は並べ替えを行っておらず (望んでいますが)、検索はほとんどの場合、特定のインデックス付きフィールド (すべてではありません) によって行われます。
私たちを手伝ってくれますか?前もって感謝します :)