Как создать копию строкового поля в нечувствительной к регистру форме? Я хочу использовать типичный "строковый" тип и нечувствительный к регистру тип. Типы определены так:
<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 не зависит от регистра через анализаторы, регистр значений, скопированных из поля источника, сохраняется.
Я надеюсь избежать повторной передачи значения в поле от клиента во время создания записи.