在本章中,我們將研究的排序順序默認(rèn)情況下,在給出的Lucene搜索結(jié)果或可根據(jù)需要進(jìn)行操作。
這是使用Lucene的默認(rèn)排序方式。 Lucene通過在頂部的最相關(guān)的命中提供的結(jié)果。
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(); }
這被分揀使用lucene模式,其中索引第一文檔示出第一搜索結(jié)果中。
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(); }
讓我們創(chuàng)建一個(gè)測(cè)試Lucene的應(yīng)用程序來測(cè)試分選過程。
步驟 | 描述 |
---|---|
1 | 創(chuàng)建下名稱為L(zhǎng)uceneFirstApplication的一個(gè)項(xiàng)目作為解釋Lucene的應(yīng)用在包packagecom.yiibai.lucene下,在第一個(gè)應(yīng)用程序的篇章。也可以使用Lucene創(chuàng)建的項(xiàng)目理解搜索過程。 |
2 | 創(chuàng)建LuceneConstants.java和Searcher.java作為L(zhǎng)ucene的解釋- 第一應(yīng)用程序一章。保持其它文件不變。 |
3 | 創(chuàng)建LuceneTester.java如下所述。 |
4 | 清理和構(gòu)建應(yīng)用程序,以確保業(yè)務(wù)邏輯按要求工作。 |
上一篇:Lucene字段下一篇:Lucene查詢編程