用SOLR和LowerCaseFilterFactory索引字段 [英] Indexing Fields with SOLR and LowerCaseFilterFactory

查看:453
本文介绍了用SOLR和LowerCaseFilterFactory索引字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个定义为

<fieldType name="text_ws_lc" 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"/>
  </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"/>
  </analyzer>
</fieldType>

对于这种类型的字段,在不区分大小写的情况下进行搜索非常有效.但是,我希望将原始值插入到字段中,而不是小写值.是否可以从索引分析器中删除LowerCaseFilterFactory并获得此功能? ALA

Which works fine for searching without case sensitivity on fields that are this type. However I want the original value inserted into the field NOT the lowercase value. Is it possible to remove the LowerCaseFilterFactory from the index analyzer and get this functionality? ALA

<fieldType name="text_ws_lc_std" 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"/>
  </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"/>
  </analyzer>
</fieldType>

推荐答案

您应该定义两个字段:一个字段的小写值用于搜索,另一个字段用于保留原始值.您可以在schema.xml中使用复制字段指令来使两个字段保持同步.

You should define two fields: one with the value in lower case used for searching and another one to hold the original value. You can use a copy field instruction in your schema.xml to maintain the two fields in sync.

这篇关于用SOLR和LowerCaseFilterFactory索引字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆