2011-12-14 76 views
1

我想定义Solr的一个字段类型应该具有以下特性如何定义与忽略大小写和whitespacetokenizer

忽略情况下的字段类型,而搜索 忽略空格分割

尝试如下,

<fieldType name="text_lcws" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    </analyzer> 
</fieldType> 

但它分裂:-(

+0

它应该如何标记?或者它不应该标记? – 2011-12-14 12:49:18

回答

0

您需要修改是断词上的空格串 正在使用。根据Solr Wiki上的Analyzers/Tokenizers页面,我建议使用KeywordTokenizerFactory,如下定义:“将整个字段视为单个标记,而不管其内容如何。”

所以我会定义一个字段,如下所示。请注意,我也删除了SynonymFilterFactory,不确定是否真的需要,如果是这样,我建议将它作为索引时间分析器。

<fieldType name="text_lcnows" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType>