【问题标题】:How can I truncate a solr string field to 10 characters?如何将 solr 字符串字段截断为 10 个字符?
【发布时间】: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 个字符?我需要编写自己的过滤器吗?

【问题讨论】:

    标签: solr indexing


    【解决方案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 截断
    猜你喜欢
    • 2011-01-10
    • 2012-01-29
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多