如何使用ignore case和whitespacetokenizer定义字段类型

时间:2011-12-14 06:11:09

标签: search solr

我想在Solr中定义一个字段类型,它应具有以下属性

搜索时忽略大小写 忽略空格分裂

尝试如下,

<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>

但它将字符串拆分为空格: - (

1 个答案:

答案 0 :(得分: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>