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(); }