【问题标题】:Solr error 500 on phrasequery search for text_general field关于 text_general 字段的短语查询搜索的 Solr 错误 500
【发布时间】:2013-10-24 19:20:42
【问题描述】:

查询错误:

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>

【问题讨论】:

标签: solr phrase


【解决方案1】:

这是因为您将 field_type 从 string 更改为 text_general 并且没有做一个干净的索引。所以索引器没有必要的位置数据。首先使用

清空你的核心
/your_core_name/update?stream.body=<delete><query>*:*</query></delete>&commit=true

然后索引这个核心。

注意:上面的更新代码会删除你所有的核心数据,并且无法撤消!

【讨论】:

  • 完美运行,只是删除并再次添加所有文档。
  • 我第二次遇到这个答案。第二次它为我节省了一些严重的问题跟踪。但不能两次投票。
  • @jan 很高兴听到这有帮助 ;)
  • 但是为什么要刷新索引呢?只是重新添加文档不起作用吗?
  • @TimBezhashvyly 不。这确实是问题的重点。因为分析器发生了变化,如果你不刷新索引,它将有两种不同类型的索引数据。这会导致错误。
【解决方案2】:

由于在 solr 的“PF”参数中使用了复制字段,我也遇到了同样的错误。 从“PF”参数中删除任何复制字段,它会顺利运行。

我的 Solr 架构 => copyField source="name" dest="sname"

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

当我从 "PF" 参数中删除 "sname" 时,它起作用了

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 2015-11-11
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多