欄位

欄位是在schema的欄位元素中定義的。一旦您設定好欄位類型,定義欄位本身就很簡單。

欄位定義範例

以下範例定義了一個名為 price 的欄位,其類型名為 float,預設值為 0.0indexedstored 屬性明確設定為 true,而 float 欄位類型上指定的任何其他屬性都會繼承。

<field name="price" type="float" default="0.0" indexed="true" stored="true"/>

欄位屬性

欄位定義可以具有以下屬性

name

必要

預設:無

欄位的名稱。欄位名稱應僅由字母數字或底線字元組成,且不得以數字開頭。目前這並非強制執行,但其他欄位名稱將不會從所有元件獲得一流的支援,且不保證回溯相容性。同時具有前導和尾隨底線的名稱(例如 _version_)是保留的。

type

必要

預設:無

此欄位的 fieldType 名稱。這將在 fieldType 定義上的 name 屬性中找到。每個欄位都必須具有 type

default

選用

預設:無

預設值,在建立索引時,如果任何文件在此欄位中沒有值,則會自動將其新增至該文件。如果未指定此屬性,則沒有預設值。

選用的欄位類型覆寫屬性

欄位可以具有與欄位類型相同的許多屬性。下表中的屬性如果在個別欄位上指定,將覆寫該欄位之 fieldType 上針對該屬性指定的任何明確值,或由基礎 fieldType 實作提供的任何隱含預設屬性值。下表複製自欄位類型定義和屬性,其中有更多詳細資訊

屬性 描述 隱含預設值

indexed

如果為 true,則欄位的值可用於查詢以擷取符合的文件。

true

stored

如果為 true,則可以透過查詢擷取欄位的實際值。

true

docValues

如果為 true,則欄位的值將放入欄導向的 DocValues 結構中。

對於大多數欄位true

sortMissingFirstsortMissingLast

當排序欄位不存在時,控制文件的放置方式。

false

multiValued

若為 true,表示單一文件可能包含此欄位類型的多個值。

false

uninvertible

若為 true,表示 indexed="true" docValues="false" 的欄位可以在查詢時進行「反轉」,以建立大型的記憶體資料結構,用來取代 DocValues

false

omitNorms

若為 true,則省略與此欄位相關聯的標準化值(這會停用該欄位的長度標準化,並節省一些記憶體)。對於所有原始(非分析)欄位類型,例如 int、float、data、bool 和 string,預設為 true。只有全文欄位或需要索引時間加權的欄位才需要標準化值。

*

omitTermFreqAndPositions

若為 true,則省略此欄位的詞頻、位置和酬載。對於不需要該資訊的欄位,這可以提高效能。它還可以減少索引所需的儲存空間。在此選項的欄位上發出依賴位置的查詢將會靜默地找不到文件。對於所有非文字欄位類型的欄位,此屬性預設為 true。

*

omitPositions

類似於 omitTermFreqAndPositions,但會保留詞頻資訊。

*

termVectorstermPositionstermOffsetstermPayloads

這些選項指示 Solr 維護每個文件的完整詞向量,並可選擇包含這些向量中每個詞出現的位置、偏移量和酬載資訊。這些可用於加速高亮顯示和其他輔助功能,但會在索引大小方面產生相當大的成本。對於 Solr 的典型使用方式來說,它們並非必要。

false

required

指示 Solr 拒絕任何嘗試加入不包含此欄位值的文件。此屬性預設為 false。

false

useDocValuesAsStored

如果欄位已啟用 DocValues,將此設定為 true 將允許該欄位像儲存欄位一樣返回(即使它具有 stored=false),當在 fl 參數中匹配 “*” 時。

true

large

大型欄位始終會延遲載入,並且只有當實際值 < 512KB 時才會佔用文件快取中的空間。此選項需要 stored="true"multiValued="false"。它適用於可能具有非常大值的欄位,以便它們不會被快取到記憶體中。

false