W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr 字段類型定義在對文檔進(jìn)行索引或向索引發(fā)送查詢時(shí)將在字段上發(fā)生的分析。
字段類型定義可以包括以下四種類型的信息:
字段類型在 schema.xml 中定義。每個(gè)字段類型在 fieldType 元素之間定義。他們可以有選擇地分組在一個(gè) types 元素中。下面是一個(gè)名為 text_general 類型的字段類型定義的示例:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
關(guān)于上述代碼的提示信息:
實(shí)現(xiàn)類負(fù)責(zé)確保字段被正確處理。在 schema.xml 類名中,字符串 solr 是 org.apache.solr.schema 或者 org.apache.solr.analysis 的簡寫形式。所以,solr.TextField 是真的 org.apache.solr.schema.TextField。
字段類型 class 決定了字段類型的大部分行為,但也可以定義可選的屬性。例如,date 字段類型的以下定義就定義了兩個(gè)屬性,sortMissingLast 和 omitNorms。
<fieldType name="date" class="solr.DatePointField"
sortMissingLast="true" omitNorms="true"/>
可以為給定字段類型指定的屬性分為三個(gè)主要類別:
這些是字段的一般屬性:
fieldType 的名稱。該值用于字段定義中的“類型”屬性中。強(qiáng)烈建議名稱僅包含字母數(shù)字或下劃線字符,不能以數(shù)字開頭。目前這不是嚴(yán)格執(zhí)行的。
用于存儲(chǔ)和索引此類型數(shù)據(jù)的類名。請注意,您可以用 “solr” 作為前綴包含的類名稱。Solr 會(huì)自動(dòng)找出哪些軟件包可以搜索這個(gè)類,這樣solr.TextField
就可以工作了。
如果您使用的是第三方類,則可能需要具有完全限定的類名稱。solr.TextField
是的完全限定等效項(xiàng)是org.apache.solr.schema.TextField
。
對于多值字段,指定多個(gè)值之間的距離,這可以防止虛假詞組匹配。
對于文本字段。如果為true
,Solr 將自動(dòng)生成相鄰詞語的短語查詢。如果為false
,則術(shù)語必須用雙引號括起來以作為短語處理。
對于文本字段,查詢時(shí)使用sow=false
(這是sow
參數(shù)的默認(rèn)值)。對具有查詢分析器的字段類型使用 true (默認(rèn)值),包括具有圖形感知的篩選器,例如同義詞圖形過濾器和字符分隔符圖形過濾器。
對于既有查詢分析器使用的字段類型,使用 false 包括在缺少某些標(biāo)記 (例如,Shingle Filter) 時(shí)可以匹配文檔的篩選器。
定義用于此類型的字段的自定義 DocValuesFormat。這要求具有架構(gòu)感知的編解碼器(例如,SchemaCodecFactory 已在 solrconfig.xml 中配置)。
定義用于此類型的字段的自定義 PostingsFormat。這要求具有架構(gòu)感知的編解碼器(例如,SchemaCodecFactory 已在 solrconfig.xml 中配置)。
Tip:只有默認(rèn)編解碼器支持 Lucene 索引反向兼容。如果您選擇在 schema.xml 中自定義 postingsFormat 或 docValuesFormat,則升級到未來版本的 Solr 可能會(huì)要求您切換回默認(rèn)編解碼器,并在升級之前優(yōu)化索引以將其重寫為默認(rèn)編解碼器,或升級后從頭開始重新構(gòu)建整個(gè)索引。
這些屬性可以在字段類型中指定,也可以在單個(gè)字段中指定,以覆蓋字段類型提供的值。
每個(gè)屬性的默認(rèn)值取決于底層的 FieldType 類,這又可能取決于的 <schema/> 的 version 屬性。下面的表格包含了 FieldTypeSolr 提供的大多數(shù)實(shí)現(xiàn)的默認(rèn)值,假設(shè) schema.xml 聲明 version="1.6"。
屬性 | 描述 | 值 | 隱含默認(rèn)值 |
---|---|---|---|
索引(indexed) |
如果為 true,則可以在查詢中使用該字段的值來檢索匹配的文檔。 |
true 或者 false
|
true
|
存儲(chǔ)(stored) |
如果為 true,則字段的實(shí)際值可以通過查詢來檢索。 |
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ī)范(這將禁用該字段的長度規(guī)范化,并保存一些內(nèi)存)。對于所有基元 (non-analyzed) 字段類型(如 int、float、data、bool 和 string)的默認(rèn)值均為true。只有全文字段或字段需要規(guī)范。 |
true 或者 false
|
* |
omitTermFreqAndPositions |
如果為 true,則省略該字段過帳的術(shù)語頻率、位置和有效載荷。這可以提高不需要這些信息的字段的性能。這也減少了索引所需的存儲(chǔ)空間。依賴于使用此選項(xiàng)在字段上發(fā)布的位置的查詢將悄然無法找到文檔。對于不是文本字段的所有字段類型,此屬性默認(rèn)為 true。 |
true 或者 false
|
* |
omitPositions |
類似于 omitTermFreqAndPositions 但保留了詞頻信息。 |
true 或者 false
|
* |
termVectors termPositions termOffsets termPayloads |
這些選項(xiàng)指示 Solr 維護(hù)每個(gè)文檔的全部向量矢量,可選地包括這些向量中每個(gè)詞條出現(xiàn)的位置,偏移和有效載荷信息。這些可以用來加速突出顯示和其他輔助功能,但在索引大小方面會(huì)帶來相當(dāng)大的成本。對于 Solr 的典型用途,它們不是必需的。 |
true 或者 false
|
false
|
必須的(required) |
指示 Solr 拒絕添加沒有此字段值的文檔的任何嘗試。此屬性默認(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
|
字段類型可以選擇指定一個(gè) <similarity/>,在對引用此類型的字段進(jìn)行評分的文檔時(shí)將使用它,只要集合的 "全局" 相似性允許這樣做。
默認(rèn)情況下,任何沒有定義相似性的字段類型都會(huì)使用 BM25Similarity。有關(guān)更多詳細(xì)信息以及配置全局和每類相似性的示例,請參閱其他架構(gòu)元素。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: