solr - Apply analysis to copyfield -


i wish have field copied, , in copy apply 1 additional analyzer it. while know how make copy (<copyfield source="source" dest="dest") want run different analyzer on copy (asciifoldingfilterfactory).

how can change type of copyfield can run additional analyzer?
need change type, or can run additional analyzer?

i belive can sort of hack using dynamic field match copy field name, , change type way, won't create copy of data?

you need define new fieldtype , declare copyfield of type.

for example, below text_syn type applies set of analyzers , text_stop_syn_stem type, has more analyzers (for stop word removal , stemming):

<types>     ...     <fieldtype name="text_syn" class="solr.textfield" positionincrementgap="100">         <analyzer type="index">             <tokenizer class="solr.whitespacetokenizerfactory"/>             <filter class="solr.worddelimiterfilterfactory" preserveoriginal="1" generatewordparts="1" generatenumberparts="1" catenatewords="1" catenatenumbers="0" catenateall="1" splitoncasechange="1"/>             <filter class="solr.synonymfilterfactory" synonyms="synonyms.txt" ignorecase="true" expand="true"/>             <filter class="solr.lowercasefilterfactory"/>                     <filter class="solr.removeduplicatestokenfilterfactory"/>             <filter class="solr.asciifoldingfilterfactory"/>         </analyzer>         <analyzer type="query">             <tokenizer class="solr.whitespacetokenizerfactory"/>             <filter class="solr.worddelimiterfilterfactory" preserveoriginal="1" generatewordparts="1" generatenumberparts="1" catenatewords="0" catenatenumbers="0" catenateall="0" splitoncasechange="0"/>             <filter class="solr.lowercasefilterfactory"/>                     <filter class="solr.removeduplicatestokenfilterfactory"/>             <filter class="solr.asciifoldingfilterfactory"/>         </analyzer>     </fieldtype>      <fieldtype name="text_stop_syn_stem" class="solr.textfield" positionincrementgap="100">         <analyzer type="index">             <tokenizer class="solr.whitespacetokenizerfactory"/>             <filter class="solr.worddelimiterfilterfactory" preserveoriginal="1" generatewordparts="1" generatenumberparts="1" catenatewords="1" catenatenumbers="0" catenateall="1" splitoncasechange="1"/>             <filter class="solr.lowercasefilterfactory"/>             <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/>             <filter class="solr.synonymfilterfactory" synonyms="synonyms.txt" ignorecase="true" expand="true"/>             <filter class="solr.porterstemfilterfactory"/>             <filter class="solr.removeduplicatestokenfilterfactory"/>             <filter class="solr.asciifoldingfilterfactory"/>         </analyzer>         <analyzer type="query">             <tokenizer class="solr.whitespacetokenizerfactory"/>             <filter class="solr.worddelimiterfilterfactory" preserveoriginal="1" generatewordparts="1" generatenumberparts="1" catenatewords="0" catenatenumbers="0" catenateall="0" splitoncasechange="0"/>             <filter class="solr.lowercasefilterfactory"/>             <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/>             <filter class="solr.porterstemfilterfactory"/>                     <filter class="solr.removeduplicatestokenfilterfactory"/>             <filter class="solr.asciifoldingfilterfactory"/>         </analyzer>     </fieldtype>     ... </types> 

under fields got:

<field name="name_syn" type="text_syn" indexed="true" stored="true" /> <field name="name_stop_syn_stem" type="text_stop_syn_stem" indexed="true" stored="false" /> 

and copyfield like:

<copyfield source="name_syn" dest="name_stop_syn_stem" /> 

Comments