2011-09-22 50 views
0

当谈到solr时,我是一个完整的noob,这是我的第一个配置,我遇到了需要正确过滤solr数据的问题。我们正在使用solr 4.0,09-21-2011快照。我想要的是将各个字段中每个单词的首字母大写。我们索引的数据将包含'name'='STAR WARS'等数据。我要的是,当我查询到的数据,这个名字应该回来的“星球大战”,但回来为“星球大战”Solr CapitalizationFilterFactory不工作

这里是我的设置

<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

回答

2

您作为参考值“回来”是存储值是总是你喂到Solr索引时逐字值。标记器,过滤器等会影响索引的值,该值在搜索(和查询条件)时使用。您需要将您获得的存储值转换为您想要的形式。

+0

感谢Mauricio,这是有道理的,但是这个设置应该以我想要的格式索引数据。对? – zlegein

+0

@zlegein:索引,是的,但存储的值是分开的。 –