The problem is that you are using an analyzer at index time but then not at 
search time.

StandardAnalyzer will convert "Name1" to "name1" at index time.

At search time, because you aren't using a query parser (which would by default 
lowercase your terms) you are literally searching for "Name1" which doesn't 
exist in your index.

-----Original Message-----
From: Andrew Norman [mailto:kiwico...@gmail.com] 
Sent: Monday, June 16, 2014 8:43 AM
To: java-user@lucene.apache.org
Subject: Index Not Finding Results some times

Hi,

I am using Lucene 3.6.2 (I cannot upgrade due to 3rd party dependencies).

I have written the following code below to illustrate the problem. I create
a single document, add three fields, put it into the index. When I attempt
to find the document using exact matches I can find the document 2 out of 3
times. I have read the documentation and google'd but I am currently
drawing a blank as to where my mistake is. Any pointers would be gratefully
received.

Regards
Kiwicoder


public static void main(String[] args) throws CorruptIndexException,
LockObtainFailedException, IOException {
        RAMDirectory directory = new RAMDirectory();

        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36,
new StandardAnalyzer(Version.LUCENE_36));
        IndexWriter writer = new IndexWriter(directory, config);

        Document doc = new Document();

        doc.add(new Field("id", "c71fa7f8-32c2-4cb3-97d8-4728322079db",
Field.Store.YES, Field.Index.NOT_ANALYZED));
        doc.add(new Field("type", "data", Field.Store.NO,
Field.Index.ANALYZED));
        doc.add(new Field("name", "Name1", Field.Store.NO,
Field.Index.ANALYZED));

        writer.addDocument(doc);

        writer.close();

        // -------------------------------------------
        IndexReader reader = IndexReader.open(directory);

        IndexSearcher search = new IndexSearcher(reader);
        System.out.println("ID:   " + search.search(new TermQuery(new
Term("id", "c71fa7f8-32c2-4cb3-97d8-4728322079db")), 100).totalHits); // 1
document found
        System.out.println("TYPE: " + search.search(new TermQuery(new
Term("type", "data")), 100).totalHits); // 1 document found
        System.out.println("NAME: " + search.search(new TermQuery(new
Term("name", "Name1")), 100).totalHits); // 0 document found
        search.close();
    }

Reply via email to