I noticed a strange result from the following test case. For wildcard search, my understanding is that lucene will NOT use any analyzer on the query string. But as the following simple code to show, it looks like that lucene will lower case the search query in the wildcard search. Why? If not, why the following test case show the search hits as one for lower case wildcard search, but not for the upper case data? My original data is NOT analyzed, so they should be stored as the original data in the index segment, right?
Lucene version: 2.9.0 JDK version: JDK 1.6.0_17 public class IndexTest1 { public static void main(String[] args) { try { Directory directory = new RAMDirectory(); IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(Version.LUCENE_CURRENT), IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.add(new Field("title", "BBB CCC", Field.Store.YES, Field.Index.NOT_ANALYZED)); writer.addDocument(doc); doc = new Document(); doc.add(new Field("title", "ddd eee", Field.Store.YES, Field.Index.NOT_ANALYZED)); writer.addDocument(doc); writer.close(); IndexSearcher searcher = new IndexSearcher(directory, true); PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_CURRENT)); wrapper.addAnalyzer("title", new KeywordAnalyzer()); Query query = new QueryParser("title", wrapper).parse("title:BBB*"); System.out.println("hits of title = " + searcher.search(query, 100).totalHits); query = new QueryParser("title", wrapper).parse("title:ddd*"); System.out.println("hits of title = " + searcher.search(query, 100).totalHits); searcher.close(); } catch (Exception e) { System.out.println(e); } } } The output: hits of title = 0 hits of title = 1 _________________________________________________________________ Hotmail: Trusted email with powerful SPAM protection. http://clk.atdmt.com/GBL/go/201469227/direct/01/