我正在使用lucene 4.4。当我尝试添加带有木瓦,WordDelimiter和停用词过滤工厂的文档时,我遇到以下异常:
java.lang.IllegalArgumentException:startOffset必须为非负数,endOffset必须为> = startOffset,startOffset = 36945,endOffset = 36943 at org.apache.lucene.analysis.tokenattributes.OffsetAttributeImpl.setOffset(OffsetAttributeImpl.java:45) 在org.apache.lucene.analysis.shingle.ShingleFilter.incrementToken(ShingleFilter.java:323)
此例外不适用于所有doucments。这些是针对特定文件的。有人有这个想法吗?
答案 0 :(得分:2)
您的同义词过滤器可能会创建位置增量0,而ShingleFilter不会处理0位置增量。 (见Lucene 3475)
我相信您应该能够通过将SynonymMap
规则设置为KeepOrig
来处理此问题。基本上,您希望确保SynonymFilter
不会将多个术语创建为相同的位置。如果您在索引时和查询时应用相同的SynonymFilter
,那么通常不需要保留原件。