Hi Everyone,

I am facing some strange behaviour with Analyzers. I am using SimpleAnalyzer
for some fields in my Compass entity, but I also wrote a custom Analyzer
that is slightly different from the SimpleAnalyzer as I wanted to allow even
letters and digits in company name column.
So custom analyzer CompanyNameAnalyzer uses the following tokenizer.

public class CompanyNameTokenizer extends CharTokenizer {
  /** Construct a new CompanyNameTokenizer. */
  public CompanyNameTokenizer(Reader in) {
    super(in);
  }

  protected char normalize(char c) {
    return Character.toLowerCase(c);
  }

  /** Collects only characters which are numbers or letters */
  protected boolean isTokenChar(char c) {
    Character ch = new Character(c);
    // Exclude @ special character while tokenizing
    if(Character.isLetterOrDigit(c) || ch.equals('@'))
        return true;
    else
        return false;
  }
}

But for some reason when I search for +companyName:good +companyName:will,
the word 'will' is ignored in the search, I get results that match only
good. I guess this means that 'will' is being stripped off as it is a stop
word. I don't understand why this should happen because the custom Analyzer
I am using does not use the StopFilter. So why should it filter the stop
words?

I tried looking at the Lucene source too, but no luck. Any suggestions would
be appreciated.

Thanks,
Harini

Reply via email to