<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    LetsCoding.cn

    天地之間有桿秤,拿秤砣砸老百姓。

    Lucene源碼分析筆記之[org.apache.lucene.document](四)

    綜述:文檔(Document由字段組成(Field),字段由字段名(name)和內容(fieldsDate)組成。

    Field類系

    1.Field類系層次圖
     

    2.部分代碼及說明

    Fieldable接口

    Fieldable定義了如下的一系列的方法聲明,這些方法在AbstractFieldField中得以實現。

     1void setBoost(float boost); // boost因子
     2float getBoost();
     3String name();    // 字段名
     4public String stringValue();    // 以String的形式字段內容
     5public Reader readerValue();    // 以Reader的形式返回字段內容
     6public byte[] binaryValue();    // 以byte[]的形式返回字段內容
     7public TokenStream tokenStreamValue();    // 以TokenStream的形式返回字段內容
     8boolean isStored();    // 返回該字段是否存儲
     9boolean isIndexed();    // 返回該字段是否被索引
    10boolean isTokenized();    // 返回該字段是否被分詞
    11boolean isCompressed();    // 返回該字段是否壓縮存儲
    12boolean isTermVectorStored();    // 用于索引此字段的terms是否以term vector保存
    13boolean isStoreOffsetWithTermVector();    // 是否保存該字段term的偏移信息(tvf)
    14boolean isStorePositionWithTermVector();    // 是否保存該字段term的位置信息(tvf)
    15boolean getOmitNorms();
    16void setOmitNorms(boolean omitNorms);
    17boolean isLazy();    // 返回該字段內容是否滯后加載


    AbstractField

    AbstractField為一抽象類,它實現了Fieldable中的部分方法。也定義了一系列變量用來表示該Field所包含的數據及對此數據的處理方式。

     1    protected String name = "body"// Field名,默認為body
     2    protected boolean storeTermVector = false;    // 是否保存字段的term vector
     3    protected boolean storeOffsetWithTermVector = false;    // term偏移信息
     4    protected boolean storePositionWithTermVector = false;    // term位置信息
     5    protected boolean omitNorms = false// 是否省略標準????
     6    protected boolean isStored = false// 是否存儲
     7    protected boolean isIndexed = true// 是否索引
     8    protected boolean isTokenized = true// 是否分詞
     9    protected boolean isBinary = false;    // 是否二進制保存
    10    protected boolean isCompressed = false// 是否壓縮存儲
    11    protected boolean lazy = false// 是否滯后加載
    12    protected float boost = 1.0f// boost因子
    13    // the one and only data object for all different kind of field values
    14    protected Object fieldsData = null// Field內容


    Field

    Field為具體子類,實現了接口Fieldable中的所有方法。另外,它還定義了3個內部類,Field.Store Field.IndexField.TermVector用來說明在索引是對該字段的處理方式。

    Field.Store:是否存儲此Field

    Field.Index:是否索引此Field

    Field.TermVector:此Field是否擁有及如何存儲term vectors



    FieldSelector
    類系

    1FieldSelector類系層次圖

    3.部分代碼及說明

    FieldSelectoResult接口

    FieldSelector接口只提供了一個accept(fieldName)方法,用來返回文檔的字段在文檔被讀取時的載入方式;而FieldSelectorResult則是字段載入方式的集合類:

     1public transient static final FieldSelectorResult LOAD = new FieldSelectorResult(
     2            0);    // 立即載入
     3public transient static final FieldSelectorResult LAZY_LOAD = new FieldSelectorResult(
     4            1);        // 滯后載入
     5public transient static final FieldSelectorResult NO_LOAD = new FieldSelectorResult(
     6            2);        // 不載入字段內容
     7public transient static final FieldSelectorResult LOAD_AND_BREAK = new FieldSelectorResult(
     8            3);        // 載入部分字段并終止載入
     9public transient static final FieldSelectorResult LOAD_FOR_MERGE = new FieldSelectorResult(
    10            4);        // 立即載入,但不解壓被壓縮過的內容
    11public transient static final FieldSelectorResult SIZE = new FieldSelectorResult(
    12            5);        // 只載入字段大小
    13public transient static final FieldSelectorResult SIZE_AND_BREAK = new FieldSelectorResult(
    14            6);        // 載入字段大小并立即終止載入
    15

     

    LoadFirstFieldSelector

    LoadFirstFieldSelector最簡單的一個FieldSelector實現類,該選擇器類說明字段(accept()方法中的參數指定的字段)內容被載入后,立即終止文檔的載入過程。

    1    public FieldSelectorResult accept(String fieldName) {
    2        return FieldSelectorResult.LOAD_AND_BREAK;
    3    }

     

    MapFieldSelector

    MapFieldSelector用來說明哪些字段內容被載入,哪些字段內容不被載入。它定義了一個Map類型的變量:fieldSelections,在此Map查的到的字段將被載入,反之將不被載入。

    1    public FieldSelectorResult accept(String field) {
    2        FieldSelectorResult selection = (FieldSelectorResult) fieldSelections
    3                .get(field);
    4        return selection != null ? selection : FieldSelectorResult.NO_LOAD;
    5    }


    SetBasedFieldSelector類

    SetBasedFieldSelector用來說明哪些字段內容將被立即載入,哪些字段將被滯后載入。

     1    private Set fieldsToLoad;    // 立即載入字段集合
     2    private Set lazyFieldsToLoad;    // 滯后載入字段集合
     3
     4    public FieldSelectorResult accept(String fieldName) {
     5        FieldSelectorResult result = FieldSelectorResult.NO_LOAD;
     6        if (fieldsToLoad.contains(fieldName) == true{
     7            result = FieldSelectorResult.LOAD;
     8        }

     9        if (lazyFieldsToLoad.contains(fieldName) == true{
    10            result = FieldSelectorResult.LAZY_LOAD;
    11        }

    12        return result;
    13    }

     

    Document

    文檔是索引和搜索的單位,它由一組字段構成。每個字段都有字段名跟字段內容。字段有可能跟文檔一起被保存下來,這樣在文檔被搜索到時就會同時返回該字段的內容。因此,文檔需要保存一個或多個字段來與其他文檔相區別。

    posted on 2008-12-02 12:01 Rolandz 閱讀(2348) 評論(3)  編輯  收藏

    評論

    # re: Lucene源碼分析筆記之[org.apache.lucene.document](四) 2009-03-30 14:06 koala++

    寫的不錯呀,為什么不再寫下去了呢?  回復  更多評論   

    # re: Lucene源碼分析筆記之[org.apache.lucene.document](四) 2009-10-21 20:10 ggggggggg

    寫的非常好,我不頂不行.....  回復  更多評論   

    # re: Lucene源碼分析筆記之[org.apache.lucene.document](四) 2009-11-11 15:53 afdsafds

    是不是延遲加載是不是只能查看不能設置呀?請問有辦法設置加載方式嗎?  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    留言簿(1)

    隨筆分類(12)

    隨筆檔案(19)

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 18勿入网站免费永久| 一级特黄aaa大片免费看| 亚洲视频免费在线观看| 久草视频免费在线观看| 精品国产一区二区三区免费看| 久久亚洲AV成人无码软件| 久操免费在线观看| 亚洲精品中文字幕乱码| 亚洲一级免费视频| 亚洲AV色吊丝无码| 精品少妇人妻AV免费久久洗澡| 欧洲亚洲综合一区二区三区| 亚洲成年人啊啊aa在线观看| 一级a性色生活片久久无少妇一级婬片免费放 | 国产a v无码专区亚洲av| 一级a性色生活片久久无少妇一级婬片免费放| 亚洲 综合 国产 欧洲 丝袜| www免费黄色网| 亚洲AV无码专区电影在线观看| 免费无码中文字幕A级毛片| 亚洲一区二区三区在线观看蜜桃| 妞干网手机免费视频| 亚洲国产成人精品不卡青青草原| 免费人妻无码不卡中文字幕系| 亚洲精品不卡视频| 四虎国产精品免费视| 91视频免费观看高清观看完整| 亚洲综合无码一区二区三区| 国产精品麻豆免费版| 国产一精品一AV一免费| 亚洲宅男精品一区在线观看| 亚洲无码视频在线| 精品免费人成视频app| 亚洲AV网一区二区三区 | 亚洲videos| 免费观看亚洲人成网站| 免费视频精品一区二区三区| 亚洲日本国产综合高清| 一本色道久久综合亚洲精品高清| 4455永久在线观免费看| AV激情亚洲男人的天堂国语|