我为索引创建了以下字符串字段。
<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个字符?我需要编写自己的过滤器吗?
答案 0 :(得分:6)
一个选项:PatternTokenizerFactory并将输入正则表达为您需要的任何形式。
第二个选项:使用copyfield命令,将maxChars参数设置为10.
第三个选项:在数据进入solr之前处理此问题。
第二个选项可能是最简单的选项,可让您保持原始字段值不变。
答案 1 :(得分:0)
使用字长过滤器
<filter class="solr.LengthFilterFactory" min="1" max="10" />
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory
*编辑我可能弄错了。我不确定这会截断令牌(看起来它可能只是过滤令牌)