如何将 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新手。谢谢。 第四个选项:使用&lt;filter class="solr.TruncateTokenFilterFactory" prefixLength="10" /&gt;【参考方案2】:

使用字长过滤器

&lt;filter class="solr.LengthFilterFactory" min="1" max="10" /&gt;

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

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

【讨论】:

正确的只会过滤掉这些值,它不会截断它们。使用TruncateTokenFilterFactory 截断

以上是关于如何将 solr 字符串字段截断为 10 个字符?的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询语句截断问题

VARCHAR 字段被截断为 255 个字符

如何在 C# 中转换为字节时截断字符串?

sql server,将截断字符串或二进制数据,如何知道出错在哪个字段?

Apache Solr 字符串字段或文本字段?

备忘录从 Access 数据库截断为 VBA 字符串