Solr在text_general字段进行短语查询时出现500错误

8

出现查询错误:

LNm:"PersonLastName III"

响应为:"字段“LNm”被索引但没有位置数据;无法运行PhraseQuery"

模式为:

<field name="LNm" type="text_general" indexed="true" stored="true"/>

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>

    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

你看过这个吗?http://lucene.472066.n3.nabble.com/quot-Indexed-without-position-data-quot-strange-exception-in-eDisMax-Solr-4-0beta-td4011220.html - arun
2个回答

17
这是因为你将“field_type”从字符串更改为"text_general",但没有进行清理索引。因此索引器缺少必要的位置数据。首先使用以下内容清空你的核心:
/your_core_name/update?stream.body=<delete><query>*:*</query></delete>&commit=true

然后对该核心进行索引。

注意:上述更新代码将删除核心中的所有数据,这是不可逆的!


完美地工作了,只是删除了所有文档,然后重新添加。 - coding_idiot
第二次遇到这个答案。第二次它帮我解决了一些严重的问题跟踪。虽然不能点赞两次。 - jan
@jan 很高兴听到那有所帮助 ;) - Can YILDIZ
但是为什么需要刷新索引?重新添加文档不行吗? - user487772
1
@TimBezhashvyly 不是的。这确实是问题的主要点。因为分析器已更改,如果您不刷新索引,它将具有两种不同类型的索引数据。这会导致错误。 - Can YILDIZ

0

我也因为在solr的“PF”参数中使用copyfields而遇到了同样的错误。 从“PF”参数中删除任何copyfields,它将平稳地工作。

我的Solr模式 => copyField source="name" dest="sname"

我的SolrConfig文件=> attr_Cuisines^20 sname^10 neighbourhood^5 subcats^10 tags^1 features^2

当我从“PF”参数中删除"sname"时,它就可以工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接