apache lucene-建立自己的搜尋引擎-查詢資料

搜尋引擎最重要的功能就是查詢資料了,當建立好索引檔後,就可以針對索引檔內容進行查詢,索引資料可分為有做分詞及未做分詞,未做分詞的索引資料,只有全部內容均相同才會找到此筆資料,有做分詞者,則依分詞類型,可能有單字索引,雙字索引或中文字詞索引等,索引做的越好,搜尋到的資料會越精準。

資料Field也分成儲存及不存儲二種,當選擇儲存Store.YES時,查詢到此筆資料時則可以直接取用,不過此方法會佔用較多的空間,不存儲方法Store.NO則相反。

索引資料內容如下:

apache lucene




原始碼如下:

對索引檔進行中華、台灣、民國、a.txt四個字詞的查詢結果如下:

對索引檔進行中華、台灣、民國、a.txt四個字詞的查詢

0 comments on “apache lucene-建立自己的搜尋引擎-查詢資料

    2 Pings/Trackbacks 於 "apache lucene-建立自己的搜尋引擎-查詢資料"

    1. [...] 另外寫一個搜尋程式,來查詢剛才建立的索引內容,比較詳細的說明可以參考apache lucene建立搜尋。 package testlucene;   import java.util.Date; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query;   public class LuceneSearch { private IndexSearcher searcher = null; private Query query = null; private Analyzer analyzer = new StandardAnalyzer();   public LuceneSearch() { try { // 建立查詢器 searcher = new IndexSearcher(IndexReader.open("d:\index"));   } catch (Exception e) {   } }   // hits是查詢的結果集 public final Hits search(String keyword) throws Exception { System.out.println("正在檢索關鍵字 : " + keyword); // 建立要查詢的("目標",分析器) QueryParser qp = new QueryParser("content", analyzer); // parse(查詢字) ,keyword可以用空白格開,理論上會查出 // A AND B ,A,B 三種結果,放入同一個結果集 // AND OR 大寫是logic判斷用 query = qp.parse(keyword); Date start = new Date(); // hits是查詢的結果集 Hits hits = searcher.search(query); Date end = new Date(); System.out .println("檢索完成,用時" + (end.getTime() - start.getTime()) + "毫杪");   return hits; }   // 列印結果集 public void printResult(Hits h) { if (h.length() == 0) { System.out.println("對不起!沒有您要找的資料!"); } else { // hits的length是查到的所有結果 for (int i = 0; i < h.length(); i++) { try { // 取得第n個查詢結果,此處get("contents")會是null, // 因為content是查詢用欄位 // 而get("path")則是敘述欄位 // 請在建立index時就定義好 Document doc = h.doc(i); // System.out.println("這是第"+(i+1)+"個檢索到的結果,檔案為 : // "+doc.get("path")); System.out.println(doc.get("url")); } catch (Exception e) { e.printStackTrace(); } } } System.out.println("---------------------------"); }   public static void main(String[] args) throws Exception { LuceneSearch test = new LuceneSearch();   test.printResult(test.search("FileUpload"));   }   } var linkwithin_site_id = 207402; 發表時間:四月 7th, 2011 分類: Java. 標籤: RSS 2.0 | Trackback. [...]

    發表迴響

    你的電子郵件位址並不會被公開。 必要欄位標記為 *

    *