4

我创建了以下用于索引的字符串字段。

<fieldType name="short_text_for_sort" class="solr.StrField" omitNorms="true" sortMissingLast="true" omitTermFreqAndPositions="true" positionIncrementGap="100">
  <analyzer type="index">
    <!-- TODO: truncate to 10 characters-->
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.ASCIIFoldingFilterFactory"/>
  </analyzer>
</fieldType>

如何将此字段限制为 10 个字符?我需要编写自己的过滤器吗?

4

2 回答 2

6

一种选择: PatternTokenizerFactory 并将输入正则表达式转换为您需要的任何形式。

第二个选项:使用 copyfield 命令,将 maxChars 参数设置为 10。

第三种选择:在您的数据进入 solr 之前处理这个问题。

第二个选项可能是最简单的,并且可以让您保持原始字段值不变。

于 2012-04-24T20:38:18.797 回答
0

使用字长过滤器

<filter class="solr.LengthFilterFactory" min="1" max="10" />

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory

*编辑我可能弄错了。我不确定这会截断令牌(看起来它可能只是过滤令牌)

于 2012-04-24T22:05:15.430 回答