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

1 つのオプション: PatternTokenizerFactory を使用して、入力を必要な形式に正規表現します。

2 番目のオプション: copyfield コマンドを使用して、maxChars パラメーターを 10 に設定します。

3 番目のオプション: データが solr になる前にこれに対処します。

2 番目のオプションはおそらく最も簡単で、元のフィールド値をそのまま保持できます。

于 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 に答える