当谈到solr时,我是一个完整的菜鸟,这是我的第一个配置,我遇到了正确过滤solr数据的问题。我们正在使用solr 4.0,即09-21-2011快照。我想要的是将每个单词的第一个字母大写在各个领域。我们索引的数据将包含'name'='STAR WARS'等数据。我想要的是当我查询数据时该名称应该作为“星球大战”返回但是作为“星球大战”返回
这是我的设置
<fieldType name="text_capital" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CapitalizationFilterFactory" onlyFirstWord="false" okPrefix="CVS"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CapitalizationFilterFactory" onlyFirstWord="false" okPrefix="CVS"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
这是字段映射
<field name="name" type="text_capital" indexed="true" stored="true" />
现在,当我查看分析器时,查询和索引的一切看起来都很好,它会正确地击中标记器和所有过滤器,但是当我运行查询结果时会返回名称为全部大写字母。我觉得我在这里遗漏了一些明显的东西。
谢谢,
-zach
答案 0 :(得分:2)
您称为“返回”的值是存储的值,始终索引时输入Solr的逐字值。标记生成器,过滤器等会影响搜索时使用的索引值(以及查询字词)。您可以将存储的值转换回所需的格式。