大文字と小文字を区別しない形式で文字列フィールドのコピーを作成するにはどうすればよいですか? 典型的な「文字列」タイプと大文字と小文字を区別しないタイプを使用したい。タイプは次のように定義されます。
<fieldType name="string" class="solr.StrField"
sortMissingLast="true" omitNorms="true" />
<!-- A Case insensitive version of string type -->
<fieldType name="string_ci" class="solr.StrField"
sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
そして、そのようなフィールドの例:
<field name="destANYStr" type="string" indexed="true" stored="true"
multiValued="true" />
<!-- Case insensitive version -->
<field name="destANYStrCI" type="string_ci" indexed="true" stored="false"
multiValued="true" />
次のように CopyField を使用してみました。
<copyField source="destANYStr" dest="destANYStrCI" />
しかし、明らかに CopyField は、アナライザーが呼び出される前に source と dest で呼び出されるため、アナライザーを介して dest の大文字と小文字を区別しないように指定したにもかかわらず、ソース フィールドからコピーされた値の大文字と小文字は保持されます。
レコードの作成時に、クライアントからフィールドの値を再送信しないようにしたいと考えています。