Lucene排序 Lucene StandardAnalyzer类 Lucene排序 在本章中,我们将研究的排序顺序默认情况下,在给出的Lucene搜索结果或可根据需要进行操作。 按相关性排序 这是使用Lucene的默认排序方式。 Lucene通过在顶部的最相关的命中提供的结果。 private void sortUsingRelevance(String searchQuery) throws IOException, ParseException{ searcher = new Searcher(indexDir); long startTime = System.currentTimeMillis(); //create a term to search file name Term term = new Term(LuceneConstants.FILE_NAME, searchQuery); //create the term query object Query query = new FuzzyQuery(term); searcher.setDefaultFieldSortScoring(true, false); //do the search TopDocs hits = searcher.search(query,Sort.RELEVANCE); long endTime = System.currentTimeMillis(); System.out.println(hits.totalHits + " documents found. Time :" + (endTime - startTime) + "ms"); for(ScoreDoc scoreDoc : hits.scoreDocs) { Document doc = searcher.getDocument(scoreDoc); System.out.print("Score: "+ scoreDoc.score + " "); System.out.println("File: "+ doc.get(LuceneConstants.FILE_PATH)); } searcher.close(); } 选择IndexOrder排序方式 这被分拣使用lucene模式,其中索引第一文档示出第一搜索结果中。 private void sortUsingIndex(String searchQuery) throws IOException, ParseException{ searcher = new Searcher(indexDir); long startTime = System.currentTimeMillis(); //create a term to search file name Term term = new Term(LuceneConstants.FILE_NAME, searchQuery); //create the term query object Query query = new FuzzyQuery(term); searcher.setDefaultFieldSortScoring(true, false); //do the search TopDocs hits = searcher.search(query,Sort.INDEXORDER); long endTime = System.currentTimeMillis(); System.out.println(hits.totalHits + " documents found. Time :" + (endTime - startTime) + "ms"); for(ScoreDoc scoreDoc : hits.scoreDocs) { Document doc = searcher.getDocument(scoreDoc); System.out.print("Score: "+ scoreDoc.score + " "); System.out.println("File: "+ doc.get(LuceneConstants.FILE_PATH)); } searcher.close(); } 应用程序示例... 让我们创建一个测试Lucene的应用程序来测试分选过程。 步骤 描述 1 创建下名称为LuceneFirstApplication的一个项目作为解释Lucene的应用在包packagecom.xxkt.lucene下,在第一个应用程序的篇章。也可以使用Lucene创建的项目理解搜索过程。 2 创建LuceneConstants.java和Searcher.java作为Lucene的解释- 第一应用程序一章。保持其它文件不变。 3 创建LuceneTester.java如下所述。 4 清理和构建应用程序,以确保业务逻辑按要求工作。 LuceneConstants.java 这个类是用来提供可应用于示例应用程序中使用的各种常量。 package com.xxkt.lucene; public class LuceneConstants { public static final String CONTENTS="contents"; public static final String FILE_NAME="filename"; public static final String FILE_PATH="filepath"; public static final int MAX_SEARCH = 10; } Searcher.java 这个类用来读取就使用Lucene库的原始数据,并搜索数据的索引。 Lucene StandardAnalyzer类