package it.heima.luceneInde; import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.Term; import org.apache.lucene.search.*; import org.apache.lucene.store.FSDirectory; import org.junit.Test; import java.io.File; import java.io.IOException; public class SortToLusene { @Test public void sortToLusene() throws IOException { //获取查询对象 IndexSearcher indexSearcher = new IndexSearcher(DirectoryReader.open(FSDirectory.open(new File("f:\\test")))); //执行查询,此处用模糊查询 FuzzyQuery fuzzyQuery = new FuzzyQuery(new Term("pname", "格力空")); //如果想设置从大到小的顺序就设置为true,否则设置为false Sort sort = new Sort(new SortField("pid", SortField.Type.INT,true)); TopDocs topDocs = indexSearcher.search(fuzzyQuery, 20,sort); int totalHits = topDocs.totalHits;//获取查询总数 ScoreDoc[] scoreDocs = topDocs.scoreDocs;//获取分数的数组 for (ScoreDoc scoreDoc : scoreDocs) { float score = scoreDoc.score;//获取分数 int id = scoreDoc.doc; //获取该分数对应的id Document doc = indexSearcher.doc(id);//根据id查询doc //System.out.println(doc); String content = doc.get("content"); String pid = doc.get("pid"); System.out.println("排序结果:"+content+"--pid="+pid); } } }
结果: