You need to apply the edge n-gram filter only at index time, not at query time. So, you need to specify two analyzers for these field types, an "index" and a "query" analyzer. They should be roughly the same, but the "query" analyzer would not have the edge n-gram filter since you are accepting the single n-gram given by the user and then matching it against the full list of n-grams that are in the index.

It is unfortunate that the wiki example is misleading. Just as bad, we don't have an example in the example schema.

Basically, take a "text" field type that you like from the Solr example schema and then add the edge n-gram filter to its "index" analyzer, probably as the last token filter. I would note that the edge n-gram filter will interact with the stemming filter, but there is not much you can do other than try different stemmers and experiment with whether stemming should be before or after the edge n-gram filter. I suspect that having stemming after edge n-gram may be better.

-- Jack Krupansky

-----Original Message----- From: jayakeerthi s
Sent: Wednesday, July 04, 2012 1:41 PM
To: solr-user@lucene.apache.org ; solr-user-h...@lucene.apache.org
Subject: Re: Urgent:Partial Search not Working

Could anyone please reply the solution to this

On Wed, Jul 4, 2012 at 7:18 PM, jayakeerthi s <mail2keer...@gmail.com>wrote:

All,

I am using apache-solr-4.0.0-ALPHA and trying to configure the Partial
search on two fields.

Keywords using to search are
The value inside the search ProdSymbl is M1.6X0.35 9P

and I willl have to get the results if I search for M1.6 or X0.35 (Partial
of the search value).


I have tried using both NGramTokenizerFactory and solr.EdgeNGramFilterFactory
 in the schema.xml

<!-- bigram -->
              <!--          <fieldType name="bigram"
class="solr.TextField" positionIncrementGap="100">
                          <analyzer type="index">
         <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3"
maxGramSize="15" />
          <filter class="solr.LowerCaseFilterFactory"/>
   </analyzer>
     <analyzer type="query">
          <tokenizer class="solr.WhitespaceTokenizerFactory" />
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>

                        </fieldType> -->

                        <fieldType name="bigram" class="solr.TextField"
omitNorms="false">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2"
maxGramSize="15" side="front"/>
  </analyzer>
                      </fieldType>



Fields I have configured as

  <field name="prodsymbl" type="bigraml" indexed="true" stored="true"
multiValued="true"/>
   <field name="measure1" type="bigram" indexed="true" stored="true"
multiValued="true"/>

Copy field as

<copyField source="prodsymbl" dest="text"/>
   <copyField source="measure1" dest="text"/>



Please let me know IF I and missing anything, this is kind of Urgent
requirement needs to be addressed at the earliest, Please help.


Thanks in advance,

Jay


Reply via email to