<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 閱讀(2346) 評論(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)

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码中文在线二区免费| 国产成人精品一区二区三区免费| 动漫黄网站免费永久在线观看| 亚洲A∨无码无在线观看| 中国一级全黄的免费观看| 亚洲色婷婷一区二区三区| 国产免费一区二区三区不卡 | 亚洲a一级免费视频| 最好免费观看高清在线| 亚洲一级二级三级不卡| 国产卡一卡二卡三免费入口| 亚洲国产成人99精品激情在线| 最近中文字幕无吗高清免费视频| 亚洲欧美日韩中文字幕在线一区| 日韩在线视频免费看| 免费视频成人国产精品网站 | 色妞WWW精品免费视频| 亚洲中文字幕久久精品蜜桃| 日韩激情无码免费毛片| 一区二区三区免费看| 久久综合九九亚洲一区| 91精品视频免费| 美女羞羞免费视频网站| 亚洲综合无码精品一区二区三区| 男人都懂www深夜免费网站| 国产成人精品日本亚洲专一区| 国产片免费在线观看| 免费人成激情视频在线观看冫| 亚洲的天堂av无码| 国产免费av片在线播放| 野花香高清视频在线观看免费| 亚洲最新在线视频| 亚洲成a人一区二区三区| 久久久久国产精品免费网站| 亚洲熟妇成人精品一区| 亚洲乱码中文字幕久久孕妇黑人 | 精品熟女少妇av免费久久| 亚洲av永久无码精品秋霞电影秋| 久久亚洲国产成人精品无码区| 亚洲三级在线免费观看| 一级做a爰片久久毛片免费陪|