搜索引擎学习(三)Lucene查询索引
生活随笔
收集整理的這篇文章主要介紹了
搜索引擎学习(三)Lucene查询索引
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、查詢理論
創建查詢:構建一個包含了文檔域和語匯單元的文檔查詢對象。(例:fileName:lucene)
查詢過程:根據查詢對象的條件,在索引中找出相應的term,然后根據term找到對應的文檔id列表。
二、代碼分析
實現代碼
/*** Lucene入門* 查詢索引*/ public class QueryIndex {/*** 查詢索引* 第一步:創建一個Directory對象,指定索引庫的位置* 第二步:創建一個IndexReader(索引讀取)對象,需要指定Directory對象* 第三步:創建一個IndexSearcher(索引搜索)對象,需要指定IndexReader對象* 第四步:創建一個TermQuery(域查詢)對象,指定查詢的域和查詢關鍵詞* 第五步:執行查詢* 第六步:返回查詢結果,遍歷查詢結果并輸出* 第七步:關閉IndexReader對象(關流)*/@Testpublic void queryIndex() throws Exception {/*第一步:創建一個Directory對象,指定索引庫的位置*/Directory directory = FSDirectory.open(new File("E:\\zhanghaoBF\\luceneSolr\\indexLibrary").toPath());//磁盤(硬盤)上的路徑/*第二步:創建一個IndexReader(索引讀取)對象*/IndexReader indexReader = DirectoryReader.open(directory);//打開索引庫(此對象為流對象)/*第三步:創建一個IndexSearcher(索引搜索)對象*/IndexSearcher indexSearcher = new IndexSearcher(indexReader);/*第四步:創建一個TermQuery(域查詢)對象,指定查詢的域和查詢關鍵詞*/Query query = new TermQuery(new Term("fileContent", "lucene"));//PS:TermQuery為精準查詢/*第五步:執行查詢*/TopDocs topDocs = indexSearcher.search(query, 2);//根據query搜索,返回評分最高的2條/*第六步:返回查詢結果,遍歷查詢結果并輸出*/ScoreDoc[] scoreDocs = topDocs.scoreDocs;//PS:注意這里返回的是文檔id的數組for (ScoreDoc scoreDoc : scoreDocs) {int docId = scoreDoc.doc;//文檔IDDocument document = indexSearcher.doc(docId);//對應的文檔 String fileName = document.get("fileName");//文件名稱 System.out.println(fileName);String fileSize = document.get("fileSize");//文件大小 System.out.println(fileSize);String filePath = document.get("filePath");//文件路徑 System.out.println(filePath);System.out.println("----------華麗的分割線----------");}/*第七步:關閉IndexReader對象(關流)*/indexReader.close();} }?
?
常用的搜索方法
?
轉載于:https://www.cnblogs.com/riches/p/11445604.html
總結
以上是生活随笔為你收集整理的搜索引擎学习(三)Lucene查询索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索引擎学习(二)Lucene创建索引
- 下一篇: 搜索引擎学习(五)Lucene操作索引