01Lucene支持類似操作數(shù)據(jù)庫一樣的建庫和索引的機制谭贪,這里建庫成為“寫入”,索引成為“讀出”锦担。
02寫入流程:
Writer包含Analyzer俭识,將所需記錄加入庫中,填充其字段洞渔,添加所需字段的索引套媚,進行存儲。
03讀出流程:
Reader(同樣包含Analyzer)根據(jù)關鍵詞磁椒,訪問庫的所有Document, 提取所需的字段堤瘤,構造生成文檔。
04Analyzer
Analyzer提供去冗余浆熔、去無效詞的機制本辐,實現(xiàn)分詞管理,其過濾基于語義医增。
05數(shù)據(jù)結構
A慎皱、term是一個文本類,包含關鍵詞和關鍵詞的字段叶骨。
B茫多、filed是字段,可這樣設置邓萨,類似于“關鍵詞所在文章的標題”地梨、“所在文章的正文”菊卷、“所在文章的最后修改時間”
C、tocken繼承了term的特性宝剖,另外也包含term的起止偏移點洁闰,以及一個類型字符串。tocken標記了關鍵詞實例的位置万细,而term僅僅是詞語的一個class扑眉,同種關鍵詞若位置不同則使用不同的tocken。
D赖钞、Segment
Segment是Document的子文件腰素,Document具備分割性和組成特性。
06 Luncene全面支持token安全令牌的規(guī)約雪营,對庫的安全查詢提供支持弓千。
07 一個簡單的代碼實例
IndexWriter writer = new IndexWriter(“/data/index/”, new StandardAnalyzer(), true);//在路徑“/data/index/”上創(chuàng)建writer,包含analyzer
Document doc = new Document();//新建數(shù)據(jù)庫文檔
doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));
doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));//在document里面創(chuàng)建字段title\lucene intro\content\lucene work well
writer.addDocument(doc);//將doc導入writer寫入器献起,doc相當于數(shù)據(jù)庫的一行
writer.optimize();//字符去冗余
writer.close();//關閉writer