Solr如何定義字段

2018-11-11 16:03 更新

字段是在 schema.xml 的字段元素中定義的。一旦你設(shè)置了字段類型,那么定義 Solr 字段本身很簡(jiǎn)單了。

示例-字段定義

以下示例定義了一個(gè)類型名為 float 并且默認(rèn)值為 0.0 的名為 price 的字段;indexed 和 stored 特性明確地設(shè)置為 true,而在 float 字段類型上指定的任何其他屬性都將被繼承。

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

字段屬性

字段定義可以具有以下屬性:

name

該字段的名稱。字段名稱只能由字母數(shù)字或下劃線字符組成,不能以數(shù)字開(kāi)頭。目前這并不是嚴(yán)格執(zhí)行的,但其他字段名稱將不具備所有組件的第一類支持,并且不保證向后的兼容性。帶有前導(dǎo)和后綴下劃線的名稱(例如,_version_)被保留。每個(gè)字段都必須有一個(gè)name。

type

fieldType字段的名稱。這將namefieldType定義的name屬性中找到。每個(gè)字段都必須有一個(gè)type。

default

將自動(dòng)添加到在索引時(shí)該字段中沒(méi)有值的任何文檔的默認(rèn)值。如果這個(gè)屬性沒(méi)有指定,那么沒(méi)有默認(rèn)值。

可選的字段類型重寫屬性

字段可以具有許多與字段類型相同的屬性。下表中的屬性在單個(gè)字段中指定,將重寫在字段的 fieldType 上指定的該屬性的任何顯式值,或者由基礎(chǔ) fieldType 實(shí)現(xiàn)所提供的任何隱式默認(rèn)屬性值。下表從字段類型定義和屬性轉(zhuǎn)載,其中有更多詳細(xì)信息:

屬性 描述 取值 隱含默認(rèn)值

indexed

如果為 true,則可以在查詢中使用該字段的值來(lái)檢索匹配的文檔。

true 或者 false

true

stored

如果為 true,則字段的實(shí)際值可以通過(guò)查詢來(lái)檢索。

true 或者 false

true

docValues

如果為 true,則該字段的值將被放入一個(gè)面向列的 DocValues 結(jié)構(gòu)中。

true 或者 false

false

sortMissingFirst 

sortMissingLast

排序字段不存在時(shí)控制文檔的位置。

true 或者 false

false

multiValued

如果為 true,則表示單個(gè)文檔可能包含此字段類型的多個(gè)值。

true 或者 false

false

omitNorms

如果為 true,則省略與該字段關(guān)聯(lián)的規(guī)范(這將禁用該字段的長(zhǎng)度規(guī)范化,并保存一些內(nèi)存)。對(duì)于所有基元 (non-analyzed) 字段類型(如 int、float、data、bool 和 string)的默認(rèn)值均為true。只有全文字段或字段需要規(guī)范。

true 或者 false

*

omitTermFreqAndPositions

如果為 true,則省略該字段過(guò)帳的術(shù)語(yǔ)頻率、位置和有效載荷。這可以提高不需要這些信息的字段的性能。這也減少了索引所需的存儲(chǔ)空間。依賴于使用此選項(xiàng)在字段上發(fā)布的位置的查詢將悄然無(wú)法找到文檔。對(duì)于不是文本字段的所有字段類型,此屬性默認(rèn)為 true。

true 或者 false

*

omitPositions

類似于omitTermFreqAndPositions但保留了詞頻信息。

true 或者 false

*

termVectors termPositions termOffsets termPayloads

這些選項(xiàng)指示 Solr 維護(hù)每個(gè)文檔的全部向量矢量,可選地包括這些向量中每個(gè)詞條出現(xiàn)的位置,偏移和有效載荷信息。這些可以用來(lái)加速突出顯示和其他輔助功能,但在索引大小方面會(huì)帶來(lái)相當(dāng)大的成本。對(duì)于 Solr 的典型用途,它們不是必需的。

true 或者 false

false

required

指示 Solr 拒絕任何嘗試添加一個(gè)文件,該文件沒(méi)有這個(gè)字段的值。該屬性默認(rèn)為 false。

true 或者 false

false

useDocValuesAsStored

如果該字段已docValues啟用,則將其設(shè)置為true將允許stored=false在fl參數(shù)中匹配“*”時(shí),將該字段作為存儲(chǔ)字段返回(即使有)。

true 或者 false

true

large

如果實(shí)際值<512KB,則大字段總是被延遲加載,并且只占用文檔高速緩存中的空間。這個(gè)選項(xiàng)需要stored="true"multiValued="false"。它的目的是為了可能有非常大的值,以便他們不被緩存在內(nèi)存中的字段。

true 或者 false

false

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)