2011-12-14 60 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>