Lucene源碼分析筆記之[org.apache.lucene.document](四)
綜述:文檔(Document)由字段組成(Field),字段由字段名(name)和內(nèi)容(fieldsDate)組成。
Field類系
1.Field類系層次圖
2.部分代碼及說明
Fieldable接口
Fieldable定義了如下的一系列的方法聲明,這些方法在AbstractField和Field中得以實現(xiàn)。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

2

3

4

5

6

7

8

9

10

11

12

13

14

Field類
Field為具體子類,實現(xiàn)了接口Fieldable中的所有方法。另外,它還定義了3個內(nèi)部類,Field.Store, Field.Index,Field.TermVector用來說明在索引是對該字段的處理方式。
Field.Store:是否存儲此Field
Field.Index:是否索引此Field
Field.TermVector:此Field是否擁有及如何存儲term vectors
FieldSelector類系
1.FieldSelector類系層次圖
3.部分代碼及說明
FieldSelectoResult接口
FieldSelector接口只提供了一個accept(fieldName)方法,用來返回文檔的字段在文檔被讀取時的載入方式;而FieldSelectorResult則是字段載入方式的集合類:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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

2

3

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

2

3

4

5

SetBasedFieldSelector類
SetBasedFieldSelector用來說明哪些字段內(nèi)容將被立即載入,哪些字段將被滯后載入。

2

3

4

5

6

7

8

9

10

11

12

13

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