You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by ku3ia <de...@gmail.com> on 2014/03/25 18:07:20 UTC
Multiple search analyzers question
Hi all!
Now I have a default search field, defined as
<field name="Text" type="text" indexed="true" stored="true" />
...
<fieldType name="text" class="solr.TextField"
autoGeneratePhraseQueries="true" >
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"
ignoreCase="true"/>
<filter class="solr.LengthFilterFactory" min="2" max="50"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"
ignoreCase="true"/>
<filter class="solr.LengthFilterFactory" min="2" max="50"/>
</analyzer>
</fieldType>
In a future, I will need to search using my current field (with KStem
filter) and need alternative search – w/o using KStem filter. The easiest
way is to add a copy field and declare a new field type (w/o KStem):
<field name="TextNKS" type="text_nks" indexed="true" stored="false" />
...
<fieldType name="text_nks" class="solr.TextField"
autoGeneratePhraseQueries="true" >
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"
ignoreCase="true"/>
<filter class="solr.LengthFilterFactory" min="2" max="50"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"
ignoreCase="true"/>
<filter class="solr.LengthFilterFactory" min="2" max="50"/>
</analyzer>
</fieldType>
and to re-index all my data.
Is any alternative way?
Thanks.
--
View this message in context: http://lucene.472066.n3.nabble.com/Multiple-search-analyzers-question-tp4126955.html
Sent from the Solr - User mailing list archive at Nabble.com.
Re: Multiple search analyzers question
Posted by Gora Mohanty <go...@mimirtech.com>.
On Mar 25, 2014 10:37 PM, "ku3ia" <de...@gmail.com> wrote:
>
> Hi all!
> Now I have a default search field, defined as
>
> <field name="Text" type="text" indexed="true" stored="true" />
> ...
> <fieldType name="text" class="solr.TextField"
> autoGeneratePhraseQueries="true" >
> <analyzer type="index">
> <tokenizer class="solr.ClassicTokenizerFactory"/>
> <filter class="solr.ClassicFilterFactory"/>
> <filter class="solr.LowerCaseFilterFactory"/>
> <filter class="solr.KStemFilterFactory"/>
> <filter class="solr.TrimFilterFactory"/>
> <filter class="solr.StopFilterFactory" words="stopwords.txt"
> ignoreCase="true"/>
> <filter class="solr.LengthFilterFactory" min="2" max="50"/>
> </analyzer>
> <analyzer type="query">
> <tokenizer class="solr.ClassicTokenizerFactory"/>
> <filter class="solr.ClassicFilterFactory"/>
> <filter class="solr.LowerCaseFilterFactory"/>
> <filter class="solr.KStemFilterFactory"/>
> <filter class="solr.TrimFilterFactory"/>
> <filter class="solr.StopFilterFactory" words="stopwords.txt"
> ignoreCase="true"/>
> <filter class="solr.LengthFilterFactory" min="2" max="50"/>
> </analyzer>
> </fieldType>
>
> In a future, I will need to search using my current field (with KStem
> filter) and need alternative search - w/o using KStem filter. The easiest
> way is to add a copy field and declare a new field type (w/o KStem):
>
> <field name="TextNKS" type="text_nks" indexed="true" stored="false" />
> ...
> <fieldType name="text_nks" class="solr.TextField"
> autoGeneratePhraseQueries="true" >
> <analyzer type="index">
> <tokenizer class="solr.ClassicTokenizerFactory"/>
> <filter class="solr.ClassicFilterFactory"/>
> <filter class="solr.LowerCaseFilterFactory"/>
> <filter class="solr.TrimFilterFactory"/>
> <filter class="solr.StopFilterFactory" words="stopwords.txt"
> ignoreCase="true"/>
> <filter class="solr.LengthFilterFactory" min="2" max="50"/>
> </analyzer>
> <analyzer type="query">
> <tokenizer class="solr.ClassicTokenizerFactory"/>
> <filter class="solr.ClassicFilterFactory"/>
> <filter class="solr.LowerCaseFilterFactory"/>
> <filter class="solr.TrimFilterFactory"/>
> <filter class="solr.StopFilterFactory" words="stopwords.txt"
> ignoreCase="true"/>
> <filter class="solr.LengthFilterFactory" min="2" max="50"/>
> </analyzer>
> </fieldType>
>
> and to re-index all my data.
> Is any alternative way?
[...]
No. If your analysers change, and/or you add new fields, you will need to
reindex.
Regards,
Gora