indexwriter物件主要包含以下幾方面的資訊:
• 用於索引文件
◦ directory directory; 指向索引資料夾
◦ analyzer analyzer; 分詞器
◦ similarity similarity = similarity.getdefault(); 影響打分的標準化因子(normalization factor)
部分,對文件的打分分兩個部分,一部分是索引階段計算的,與查詢語句無關,一部分是搜尋
階段計算的,與查詢語句相關。
◦ segmentinfos segmentinfos = new segmentinfos(); 儲存段資訊,大家會發現,和
segments_n中的資訊幾乎一一對應。
◦ indexfiledeleter deleter; 此物件不是用來刪除文件的,而是用來管理索引檔案的。
◦ lock writelock; 每乙個索引資料夾只能開啟乙個indexwriter,所以需要鎖。
◦ set segmentstooptimize = new hashset(); 儲存正在最優化(optimize)的段資訊。當呼叫
optimize的時候,當前所有的段資訊加入此set,此後新生成的段並不參與此次最優化。
• 用於合併段,在合併段的文章中將詳細描述
◦ segmentinfos localrollbacksegmentinfos;
◦ hashset mergingsegments = new hashset();
◦ mergepolicy mergepolicy = new logbytesizemergepolicy(this);
◦ mergescheduler mergescheduler = new concurrentmergescheduler();
◦ linkedlist pendingmerges = new linkedlist();
◦ set runningmerges = new hashset();
◦ list mergeexceptions = new arraylist();
◦ long mergegen;
• 為保持索引完整性,一致性和事務性
◦ segmentinfos rollbacksegmentinfos; 當indexwriter對索引進行了新增,刪除文件操作後,
可以呼叫commit將修改提交到檔案中去,也可以呼叫rollback取消從上次commit到此時的修
改。◦ segmentinfos localrollbacksegmentinfos; 此段資訊主要用於將其他的索引資料夾合併到此
索引資料夾的時候,為防止合併到一半出錯可回滾所儲存的原來的段資訊。
• 一些配置
◦ long writelocktimeout; 獲得鎖的時間超時。當超時的時候,說明此索引資料夾已經被另乙個
indexwriter開啟了。
◦ int termindexinterval; 同tii和tis檔案中的indexinterval。
Lucene 建立索引
public class indexer public static string indexdir d luceneindex public static void main string args system.out.println 被索引的文件個數 writer.numdocs catch ...
Lucene之建立索引
lucene用來建搜尋引擎要解決四個問題 抓取資料 解析資料 建立索引和執行搜尋。首先為每一篇文章新增標題 內容 寫作時間等資訊,從而寫好每一篇文章,然後將每一篇文章新增到書裡面去。這樣問及就寫好了。建立索引的過程如下 建立索引器indexwriter,這相當於一本書的框架。建立文件物件docmen...
如何建立Lucene索引
需要用到的ipa indexwriter 這個是索引建立的中心元件,通過他就可以建立索引,它是生成索引的過程 與讀取和搜尋索引沒有關係 初始化化它時,需要傳遞的兩個引數。第乙個是引數是指定索引建立的位置,第二是引數是配置分詞器。document 這個文字相當於資料庫中的一條記錄,它裡面需要新增fie...