lucene_搜索

搜索文檔

利用 Lucene 進行搜索就像創建索引同樣也是很是方便的。在上面一部分中,咱們已經爲一個目錄下的文本文檔創建好了索引,如今咱們就要在這個索引上進行搜索以找到包含某個關鍵詞或短語的文檔。Lucene 提供了幾個基礎的類來完成這個過程,它們分別是呢 IndexSearcher, Term, Query, TermQuery, Hits. 下面咱們分別介紹這幾個類的功能。函數

Queryspa

這是一個抽象類,他有多個實現,好比 TermQuery, BooleanQuery, PrefixQuery. 這個類的目的是把用戶輸入的查詢字符串封裝成 Lucene 可以識別的 Query。code

Termorm

Term 是搜索的基本單位,一個 Term 對象有兩個 String 類型的域組成。生成一個 Term 對象能夠有以下一條語句來完成:Term term = new Term(「fieldName」,」queryWord」); 其中第一個參數表明了要在文檔的哪個 Field 上進行查找,第二個參數表明了要查詢的關鍵詞。對象

TermQuery索引

TermQuery 是抽象類 Query 的一個子類,它同時也是 Lucene 支持的最爲基本的一個查詢類。生成一個 TermQuery 對象由以下語句完成: TermQuery termQuery = new TermQuery(new Term(「fieldName」,」queryWord」)); 它的構造函數只接受一個參數,那就是一個 Term 對象。文檔

IndexSearcher字符串

IndexSearcher 是用來在創建好的索引上進行搜索的。它只能以只讀的方式打開一個索引,因此能夠有多個 IndexSearcher 的實例在一個索引上進行操做。get

Hitsit

Hits 是用來保存搜索的結果的。


 public class TxtFileSearcher { 
	 public static void main(String[] args) throws Exception{ 
	    String queryStr = "lucene"; 
	    //This is the directory that hosts the Lucene index 
        File indexDir = new File("D:\\luceneIndex"); 
        FSDirectory directory = FSDirectory.getDirectory(indexDir,false); 
        IndexSearcher searcher = new IndexSearcher(directory); 
        if(!indexDir.exists()){ 
        	 System.out.println("The Lucene index is not exist"); 
        	 return; 
        } 
        Term term = new Term("contents",queryStr.toLowerCase()); 
        TermQuery luceneQuery = new TermQuery(term); 
        Hits hits = searcher.search(luceneQuery); 
        for(int i = 0; i < hits.length(); i++){ 
        	 Document document = hits.doc(i); 
        	 System.out.println("File: " + document.get("path")); 
        } 
	 } 
 }
相關文章
相關標籤/搜索