I have created an Analyzer that I think should just be converting to lower
case and add synonyms in the index (it is at the end of the email).

The problem is, after running it I get one more result than I was expecting
(Document 1 should not be there):

Running testNameCombination1, expecting: 1 result
The query: +(type:138) +(name:mario*) returned 2

Start Listing documents:

Document: 0 contains:
Name: Text<name:mario test>
Desc: Text<desc:this is test from mario>


Document: 1 contains:
Name: Text<name:test mario>
Desc: Text<desc:retro>

End Listing documents

Those same 2 documents in Luke look like this:

Document 0
Text<name:mario test>
Text<desc:this is test from mario>

Document 1
Text<name:test mario>
Text<desc:retro>

That looks correct to me. The query shouldn't match Document 1.

The analzyer used on this field is below and is applied like so:

//set the default
PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(new
SynonymAnalyzer(new FBSynonymEngine()));

//the analyzer for the name field (only converts to lower case and adds
synonyms
analyzer.addAnalyzer("name", new KeywordSynonymAnalyzer(new
FBSynonymEngine()));

Any help would be appreciated.

Thanks,

Luke


import org.apache.lucene.analysis.*;
import java.io.Reader;

public class KeywordSynonymAnalyzer extends Analyzer {
    private SynonymEngine engine;

    public KeywordSynonymAnalyzer(SynonymEngine engine) {
        this.engine = engine;
    }

    public TokenStream tokenStream(String fieldName, Reader reader) {
        TokenStream result = new SynonymFilter(new
LowerCaseTokenizer(reader), engine);
        return result;
    }
}







Luke Shannon | Software Developer
FutureBrand Toronto

207 Queen's Quay, Suite 400
Toronto, ON, M5J 1A7
416 642 7935 (office)



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to