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