使用Score对文档进行排序

来源:互联网 发布:安卓听书软件 编辑:程序博客网 时间:2024/04/28 19:41
//使用Score对文档进行排序
//根据相应的相关度进行排序
package sort;


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.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;




public class Score {
IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);
writer.setUseCompoundFile(false);

//构建8个文档, 并且添加Field
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();
Document doc7 = new Document();
Document doc8 = new Document();


Field f1 = new Field("bookname", "ab", Field.Store.YES, Field.Index.ANALYZED);
Field f2 = new Field("bookname", "ab bc cd", Field.Store.YES, Field.Index.ANALYZED);
Field f3 = new Field("bookname", "ab bc cd de", Field.Store.YES, Field.Index.ANALYZED);
Field f4 = new Field("bookname", "ab bc cd de ef ", Field.Store.YES, Field.Index.ANALYZED);
Field f5 = new Field("bookname", "ab bc cd de ef fg ", Field.Store.YES, Field.Index.ANALYZED);
Field f6 = new Field("bookname", "ab bc de", Field.Store.YES, Field.Index.ANALYZED);
Field f7 = new Field("bookname", "ab bc de ef fg gh hi", Field.Store.YES, Field.Index.ANALYZED);
Field f8 = new Field("bookname", "ab cd", Field.Store.YES, Field.Index.ANALYZED);

doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
doc4.add(f4);
doc5.add(f5);
doc6.add(f6);
doc7.add(f7);
doc8.add(f8);

writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.addDocument(doc5);
writer.addDocument(doc6);
writer.addDocument(doc7);
writer.addDocument(doc8);


writer.close();

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
TermQuery q = new TermQuery(new Term("bookname", "bc"));

//自然排序
Hits hits = searcher.search(q);
for(int i = 0; i < hits.length(); ++i){
Document doc = hits.doc(i);
System.out.println(doc.get("bookname") + "\t\t");
System.out.println(hits.score(i));
}
}
0 0