Solr 4.0在字符串字段中搜索

Solr 4.0在字符串字段中搜索,solr,indexing,migration,Solr,Indexing,Migration,我们从Solr3.6升级到Solr4.0。不幸的是,如何通过唯一键从索引中检索文档的行为显然发生了变化 在Solr 3.6中,以下查询检索单个文档: key:conf/socc/AscottS09 但是,当对同一文档集合使用Solr4.0(重新编制索引)时,将返回一个空的结果列表。Solr 4.0似乎正在处理/分析术语conf/socc/AscottS09,尽管它属于Solr.StrField类型。在Solr 4.0中,当术语包含在引号中时,查询将按预期工作: key:"conf/socc/A

我们从Solr3.6升级到Solr4.0。不幸的是,如何通过唯一键从索引中检索文档的行为显然发生了变化

在Solr 3.6中,以下查询检索单个文档:

key:conf/socc/AscottS09
但是,当对同一文档集合使用Solr4.0(重新编制索引)时,将返回一个空的结果列表。Solr 4.0似乎正在处理/分析术语
conf/socc/AscottS09
,尽管它属于
Solr.StrField
类型。在Solr 4.0中,当术语包含在引号中时,查询将按预期工作:

key:"conf/socc/AscottS09"                
schema.xml:

...
<fieldType name="string"  class="solr.StrField" sortMissingLast="true" mitNorms="true"/>
...
<field name="key" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
...
。。。
...
...
这是一个bug还是Solr处理字符串字段的方式有任何变化

编辑:我在Solr 4.0的迁移信息中没有找到任何相关信息

查询中的令牌需要转义,因为Solr 4在查询中支持正则表达式:

QueryParser.escape("XXXX")

我们正在使用此方法,但这是在另一个使用Solr/Lucene 3.6的组件中完成的。

您是否也使用管理员ui上的analyzer检查了该字段?根据我的经验,solr4的行为与您预期的一样,因此原因应该在您的代码/配置中找到。管理员中的analyzer做得很好。但是,在启用调试模式的管理ui中使用查询字段时,它会显示对术语进行分析和标记:key:conf/socc/AscottS09key:conf/socc/AscottS09+key:conf+RegexpQuery(text:/socc/)+(+text:AscottS09+text:s+text:09)+key:conf+text:/socc/+(+text:AscottS09+text:s+text:s+text:09)我在字符串字段中遇到了类似的问题。我的搜索字段包含\。当我使用分析仪时,它匹配。但当我询问时,它没有。