我有一个Lucene索引,其中有超过1.2亿条记录,并且它一直在顺利和快速地工作到目前为止。但是,今天我开始收到:
java.lang.ArrayIndexOutOfBoundsException: -65536
lemur at org.apache.lucene.util.ByteBlockPool.setBytesRef(ByteBlockPool.java:308)
lemur at org.apache.lucene.util.BytesRefHash.equals(BytesRefHash.java:183)
lemur at org.apache.lucene.util.BytesRefHash.findHash(BytesRefHash.java:330)
lemur at org.apache.lucene.util.BytesRefHash.find(BytesRefHash.java:319)
lemur at org.apache.lucene.facet.taxonomy.writercache.UTF8TaxonomyWriterCache.get(UTF8TaxonomyWriterCache.java:65)
lemur at org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter.addCategory(DirectoryTaxonomyWriter.java:411)
lemur at org.apache.lucene.facet.FacetsConfig.processFacetFields(FacetsConfig.java:322)
lemur at org.apache.lucene.facet.FacetsConfig.build(FacetsConfig.java:285)
我不知道这是由于内存问题,22gig索引还是别的什么,但是通过这个跟踪挖掘它与分类编写器缓存系统有关。我已经验证了这个记录不会一直发生,但似乎是某种内存溢出问题。不幸的是,我不知道该怎么做,或者我甚至在理解实际问题的正确轨道上。
答案 0 :(得分:0)
经过一些额外的挖掘后,我能够发现UTF8TaxonomyWriterCache
对大数据来说不是一个好的缓存机制。切换到使用LruTaxonomyWriterCache
后,一切都恢复正常。