如何将 solr 字符串字段截断为 10 个字符?
Posted
技术标签:
【中文标题】如何将 solr 字符串字段截断为 10 个字符?【英文标题】:How can I truncate a solr string field to 10 characters? 【发布时间】:2012-05-05 07:51:47 【问题描述】:我为索引创建了以下字符串字段。
<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 个字符?我需要编写自己的过滤器吗?
【问题讨论】:
【参考方案1】:一个选项:PatternTokenizerFactory 并将输入正则表达式转换为您需要的任何形式。
第二个选项:使用 copyfield 命令,将 maxChars 参数设置为 10。
第三种选择:在您的数据进入 solr 之前处理此问题。
第二个选项可能是最简单的,并且可以让您保持原始字段值不变。
【讨论】:
你好迈克,你能举个例子吗?我是一个solr新手。谢谢。 第四个选项:使用<filter class="solr.TruncateTokenFilterFactory" prefixLength="10" />
【参考方案2】:
使用字长过滤器
<filter class="solr.LengthFilterFactory" min="1" max="10" />
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory
*edit 我可能弄错了。我不确定这会截断令牌(看起来它可能只是过滤令牌)
【讨论】:
正确的只会过滤掉这些值,它不会截断它们。使用TruncateTokenFilterFactory
截断以上是关于如何将 solr 字符串字段截断为 10 个字符?的主要内容,如果未能解决你的问题,请参考以下文章