Hi, I have the following test case point to the index generated in our 
application. The result is confusing me and I don't know the reason.

Lucene version: 2.9.0
JDK 1.6.0_18

public class IndexTest1 {
    public static void main(String[] args) {
        try {
            FSDirectory directory = FSDirectory.open(new 
File("/path_to_index_files"));
            IndexSearcher searcher = new IndexSearcher(directory, true);
            PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(new 
StandardAnalyzer());
            wrapper.addAnalyzer("f1string_sif", new KeywordAnalyzer());
            wrapper.addAnalyzer("f2string_ti", new 
StandardAnalyzer(Version.LUCENE_CURRENT));
            Query query = new QueryParser("f1string_sif", new 
StandardAnalyzer(Version.LUCENE_CURRENT)).parse("f2string_ti:subbank*");
            System.out.println("query = " + query);
            System.out.println("hits = " + searcher.search(query, 
100).totalHits);
            searcher.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Output:
query = f2string_ti:subbank*
hits = 6

If I change the line to the following:

Query query = new QueryParser("f1string_sif", new 
StandardAnalyzer(Version.LUCENE_CURRENT)).parse("f2string_ti:rdmap*");

Output:
query = f2string_ti:rdmap*
hits = 4

The above result are both correct based on my data.

Now if I change the line to:

Query query = new QueryParser("f1string_sif", new 
StandardAnalyzer(Version.LUCENE_CURRENT)).parse("f2string_ti:subbank* OR 
f2string_ti:rdmap*");

Output:
query = f2string_ti:subbank* f2string_ti:rdmap*
hits = 2


I assume the count in the last result should be larger than max(6,4), but it is 
2. Any reason for that?

Thanks

                                          
_________________________________________________________________
Hotmail: Trusted email with powerful SPAM protection.
http://clk.atdmt.com/GBL/go/201469227/direct/01/

Reply via email to