Solr CapitalizationFilterFactory无效

时间:2011-09-22 23:11:38

标签: solr filtering filterfactory

当谈到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

1 个答案:

答案 0 :(得分:2)

您称为“返回”的值是存储的值,始终索引时输入Solr的逐字值。标记生成器,过滤器等会影响搜索时使用的索引值(以及查询字词)。您可以将存储的值转换回所需的格式。