接著昨天學習的 Lucene-2.2.0 源代碼閱讀學習(11) 繼續學習。 IndexWriter的一個構造器,定義如下所示:
public IndexWriter(String path, Analyzer a, boolean create)
已經知道,init方法的復雜性和重要性。對init方法所涉及到的有用的相關類進行系統地學習。 init方法的聲明是這樣的: private void init(Directory d, Analyzer a, final boolean create, boolean closeDir, IndexDeletionPolicy deletionPolicy, boolean autoCommit) 首先看一下Directory這個類的繼承關系,如圖所示: Directory是一個抽象類,它是與目錄有關的一個類,主要定義了一些與目錄相關的屬性和行為,源代碼如下所示: package org.apache.lucene.store; import java.io.IOException; public abstract class Directory {
// 有目錄相關的一個鎖工廠,主要是為向目錄中寫入文件服務,使用工廠模式,寫入文件內容必須獲取鎖
//?? 獲取該目錄下的所有文件名稱字符串的一個數組
// 判斷指定文件名稱為name的文件是否存在
// 獲取指定文件名稱為name的文件最后修改的時間
//?? 設置指定文件名稱為name的文件的修改時間為當前時間
// 刪除已經存在于該目錄下的指定文件名稱為namde的文件
// 重新命名文件,將原文件名from修改為to
// 獲取
指定文件名稱為name的文件的長度
/** 讀取該目錄下名稱為name的文件,指定了讀入緩沖區的大小為bufferSize,返回一個輸入流
// 獲取一個鎖對象,其中name指定的鎖文件的名稱,即write.lock文件
// 關閉該目錄,不再對該目錄操作了
// 當該目錄被管理,要對其進行操作之前,必須先創建一個鎖工廠LockFactory實例,只有擁有了鎖工廠才可以獲取鎖實例
// 獲取鎖工廠實例
// 過去鎖實例的唯一表示ID的字符串描述
// 拷貝源目錄src下的文件,復制到目的目錄dest下面,拷貝完成后關閉源目錄src
????? if (files == null)???
// 如果源目錄src下沒有文件,則拋出異常
????? // 如果獲取到的源目錄src目錄下的文件列表files不空,就執行復制操作
????? byte[] buf = new byte[BufferedIndexOutput.BUFFER_SIZE];
從Directory抽象類的定義,我們可以得到如下幾點: 1、管理鎖工廠及其鎖實例; 2、管理Directory目錄實例的基本屬性,主要是通過文件名稱進行管理; 3、管理與操作該目錄相關的一些流對象; 4、管理索引文件的拷貝。 然后就要對Directory抽象類的具體實現類進行學習了。 |
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
