Lucene startOffSet应该大于endOffSet错误

时间:2013-11-27 12:52:56

标签: solr lucene

我正在使用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。这些是针对特定文件的。有人有这个想法吗?

1 个答案:

答案 0 :(得分:2)

您的同义词过滤器可能会创建位置增量0,而ShingleFilter不会处理0位置增量。 (见Lucene 3475

我相信您应该能够通过将SynonymMap规则设置为KeepOrig来处理此问题。基本上,您希望确保SynonymFilter不会将多个术语创建为相同的位置。如果您在索引时和查询时应用相同的SynonymFilter,那么通常不需要保留原件。