im trying to demo lucene numeric range query and cant get it to work properly. here's is what im trying to do:
public static void main( String[] args ) throws Exception{ Path indexDir = Files.createTempDirectory("index"); Directory directory = FSDirectory.open(indexDir.toFile()); Analyzer analyzer = new EnglishAnalyzer(Version.LUCENE_36); IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer); writerConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE); IndexWriter writer = new IndexWriter(directory, writerConfig); for (int i=0; i<100; i++) { Document doc = new Document(); for (int j = 0; j<10; j++) { NumericField field = new NumericField("numericField", Field.Store.YES, true); field.setDoubleValue(Math.random()); doc.add(field); } writer.addDocument(doc); } writer.close(true); directory.close(); //just to be safe analyzer = new EnglishAnalyzer(Version.LUCENE_36); directory = FSDirectory.open(indexDir.toFile()); IndexReader reader = IndexReader.open(directory); IndexSearcher searcher = new IndexSearcher(reader); QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_36, new String[] {"someField", "someOtherField"}, analyzer); Query q = parser.parse("numericField:[0 TO 0.5]"); TopDocs results = searcher.search(q, 100); System.out.println("got "+results.scoreDocs.length+" results"); } basically im creating a new FS directory, indexing 100 documents, each document with 10 numeric fields with random values, under the same name (lucene docs say this is allowed?) i then try and search this newly-created index with a range query.
i'd expect to get almost 100 hits every time, yet it comes out 0 every time.
i'm obviously doing something wrong, but i have no idea what. any clues/ideas would be very welcome.
im using java 7 and lucene 3.6.1. this code needs the lucene core and lucene analyzers artifacts to compile