2013-02-20 150 views
3

所有! 后更新我的Solr的版本4.1,有一个这样的错误时重建索引:solr 4.1 java.lang.IllegalArgumentException:第一个位置增量必须> 0(得到0)

Warning: Error creating document : SolrInputDocument[dop_pos_state=, dop_country=, dop_first_name_onlySort=Rick, dop_first_name=Rick, dop_sync_flag=true, dop_orgid=1522402, dop_last_name=King, dop_last_name_onlySort=King, dop_invite_flag=true, dop_name=Rick King, dop_metro_area=, dop_create_date=2012-12-15 08:53:55.0, dop_address=Greater Boston Area, dop_job_level=1, dop_id=343218, dop_title=at A & J Engineering Inc., dop_update_date=2013-02-19 09:38:38.0, dop_metromap_id=210, dop_facebook_linked=0, dop_linkedin_linked=0, dop_crunchBase_linked=0, dop_twitter_linked=0] 

java.lang.IllegalArgumentException: first position increment must be > 0 (got 0) 
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:125) 
at org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:306) 
at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:250) 
at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:376) 

当我删除字段dop_title schema.xml中(这是“在一个&Ĵ工程公司”),它工作正常。该dop_title的分析仪低于:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
</fieldType> 

然后我把Solr的分析页面,结果是: enter image description here

这是怎么回事,并以何种方式可避免这种情况?谢谢你的帮助!

+0

当我删除WordDelimiterFilterFactory,它再次正常工作,所以这是问题吗? WordDelimiterFilterFactory与solr 4.1不兼容? – Rick 2013-02-20 03:31:02

+1

我把WordDelimiterFilterFactory放在StopFilterFactory之前,它也能正常工作。所以我想也许WordDelimiterFilterFactory不能处理空字段。 – Rick 2013-02-20 04:00:03

+1

猜猜这肯定是问题!我在WordDelimiterFilterFactory中遇到的示例和用例总是在WhitespaceTokenizerFactory之后立即使用它,所以从未遇到过这个问题。很高兴知道。 – arun 2013-02-20 06:04:43

回答

1

有一个正在从基于流的图形处理令牌的正在进行的迁移。这已经发现了Solr 4.1中的一些奇怪的边缘情况。看起来你的就是其中之一(回归)。如果需要,您可以打开an issue,并且有人会查看它。

与此同时,您可能会发现知道如果您在分析页面右侧点击小小的“详细输出”按钮会很有用,它会显示关于流水线中每个步骤的更多信息,包括位置值。这可以帮助您更快地调试此问题并/或帮助您避免此问题。

+0

感谢您的帮助,我会尝试“详细输出”:-) – Rick 2013-02-21 01:40:26

相关问题