Dear all,
I'm trying to sort query results using a date criteria. My dates are stored as
"long" in the database (I cannot change this) and indexed as untokenized. The
sorted resuIts I get aren't consistent. This problem does not occur if the
number are "smaller".
Am I doing something wrong ? Is it possible to sort using "long" type ? What
else should I do ?
Regards & thanks in advance,
Tom
public void testDateSort(){
System.out.println("[testDateSort][begin]");
IndexWriter mAdIndexWriter=null;
Directory adIndexDir=null;
Document doc0 = new Document();
doc0.add(new Field("ID","doc0",
Field.Store.YES,Field.Index.TOKENIZED));
doc0.add(new Field("DATE","1205000950000",
Field.Store.YES,Field.Index.UN_TOKENIZED));
Document doc1= new Document();
doc1.add(new Field("ID","doc1",
Field.Store.YES,Field.Index.TOKENIZED));
doc1.add(new Field("DATE","1205000950001",
Field.Store.YES,Field.Index.UN_TOKENIZED));
Document doc2 = new Document();
doc2.add(new Field("ID","doc2",
Field.Store.YES,Field.Index.TOKENIZED));
doc2.add(new Field("DATE","1205000950002",
Field.Store.YES,Field.Index.UN_TOKENIZED));
Analyzer analyser = new SimpleAnalyzer();
try{
adIndexDir=FSDirectory.getDirectory("C:\\YourFavoriteDirectory");
mAdIndexWriter = new IndexWriter(adIndexDir, analyser, true);
mAdIndexWriter. addDocument(doc0);
mAdIndexWriter. addDocument(doc2);
mAdIndexWriter. addDocument(doc1);
mAdIndexWriter.optimize();
mAdIndexWriter.close();
IndexReader mAdIndexReader= IndexReader.open(adIndexDir);
IndexSearcher searcher = new IndexSearcher(mAdIndexReader);
Query query=new FuzzyQuery(new
Term("ID","doc"),Float.parseFloat("0.8"));
Sort timeSorter=new Sort(new SortField("DATE",SortField.FLOAT,
false));
Hits allTheHits=searcher.search(query,timeSorter);
for(int i = 0; i <allTheHits.length(); i++){
System.out.println("Date n°" + i + " = "
+allTheHits.doc(i).get("DATE"));
}
mAdIndexReader.close();
}catch(Exception ex){
ex.printStackTrace();
fail();
}
System.out.println("[testDateSort][end]");
}
---------------------------------
Envoyé avec Yahoo! Mail.
Une boite mail plus intelligente.