我不是Java专家,但使用Solr进行搜索。在搜索了这个问题后,我无法找出为什么会发生这种情况。
我的索引有3000万条记录,没有排序,我做了最轻量级的设置,但在几次查询后出现了以下异常:
严重: java.lang.OutOfMemoryError:Java堆空间 在 org.apache.lucene.index.SegmentReader.createFakeNorms(SegmentReader.java:1117) 在 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.scorer(TermQuery.java:72) 在 org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:250) 在 org.apache.lucene.search.Searcher.search(Searcher.java:171)在 org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:988) 在 org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:884) 在 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.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 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) 在 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)
你能帮忙吗?先谢谢了 :)
我的索引有3000万条记录,没有排序,我做了最轻量级的设置,但在几次查询后出现了以下异常:
严重: java.lang.OutOfMemoryError:Java堆空间 在 org.apache.lucene.index.SegmentReader.createFakeNorms(SegmentReader.java:1117) 在 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.scorer(TermQuery.java:72) 在 org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:250) 在 org.apache.lucene.search.Searcher.search(Searcher.java:171)在 org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:988) 在 org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:884) 在 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.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 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) 在 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,它就能继续工作了,直到再次收到若干请求而崩溃。
我希望你能帮我,但是我不需要排序(尽管我希望有),大部分时间搜索都是在特定的索引字段中进行的(而不是所有字段)。你能帮忙吗?先谢谢了 :)