Hi! I've made a sample program for testing lucene :
package indexer;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.Occurs;
import com.sun.xml.internal.ws.util.StringUtils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Random;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeFilter;
import org.apache.lucene.search.RangeQuery;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.TermQuery;
public class LuceneToster
{
String [] makes = {"BMW", "AUDI", "LAMBOGINI", "FIAT", "SUZUKI",
"SUBARU", "OPEL"};
String [] models = {"QUATTRO", "A1", "A4", "M1", "PANDA", "GyBSY",
"BuzzZ", "Defender"};
String [] milleages = {"1000", "2000", "3000", "5000", "6000", "7000",
"8000", "9000"};
public LuceneToster()
{
}
private Document generateRandomDocument()
{
Document doc = new Document();
Random r = new Random();
doc.add(new Field("Make", makes[r.nextInt(makes.length)],
Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.add(new Field("Model", models[r.nextInt(models.length)],
Field.Store.NO, Field.Index.UN_TOKENIZED));
doc.add(new Field("Milleage", String.valueOf(r.nextInt(10000)),
Field.Store.YES, Field.Index.UN_TOKENIZED));
for(int i = 0; i < 5; i++)
{
doc.add(new Field("asdasdDDDa_^^asd(8"+String.valueOf(r.nextInt(15)),
models[r.nextInt(models.length)], Field.Store.NO,
Field.Index.UN_TOKENIZED));
}
return doc;
}
public void generateIndex(String dir)
{
try
{
IndexWriter luceneWriter = new IndexWriter(dir, new
StandardAnalyzer(), true);
long time = System.currentTimeMillis();
for(int i = 0; i < 2000000; i++)
{
if(i%10000 == 0)
{
luceneWriter.close();
luceneWriter = new IndexWriter(dir, new StandardAnalyzer(),
false);
System.out.println("Current i : " + String.valueOf(i));
}
luceneWriter.addDocument(generateRandomDocument());
}
long timeEst = System.currentTimeMillis() - time;
System.out.println("Generation time : " + String.valueOf(timeEst));
luceneWriter.optimize();
luceneWriter.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public void doSearch(String indexDir)
{
try
{
IndexSearcher searcher = new IndexSearcher(indexDir);
TermQuery audiTerm = new TermQuery(new Term("Make", "AUDI"));
BooleanQuery someAudi = new BooleanQuery();
someAudi.add(audiTerm, BooleanClause.Occur.MUST);
Hits hits;
long time = System.currentTimeMillis();
hits = searcher.search(someAudi, new RangeFilter("Milleage", "5000",
"5100", true, true));
long newTime = System.currentTimeMillis();
System.out.println("Search time : " + String.valueOf(newTime - time) +
" RESULT SIZE : " + String.valueOf(hits.length()));
File f = new File("newf.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
for(int i = 0; i < hits.length(); i++)
{
bw.write("Document : " +
hits.doc(i).getField("Milleage").stringValue() + " Make: "
+hits.doc(i).get("Make") + "\n");
}
bw.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
LuceneToster luceneToster = new LuceneToster();
String indexDir = args[0];
if(args[1].equals("index_mode"))
{
luceneToster.generateIndex(indexDir);
}else if(args[1].equals("search_mode"))
{
luceneToster.doSearch(indexDir);
}else
{
System.out.println("Invalid arguments!");
}
}
}
It should give results with Milleage field being in range from 5000 to 5100
, but i have results included with 509 "Milleage" for example. As i suppose
it not correct filtering criteria ? Or it's a bug ?
Thanks
--
View this message in context:
http://www.nabble.com/Search-Result-Filtering-tp19033114p19033114.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]