摘要:solr的字段型別定義了solr如何解析字段資料並將資料檢索出來,了解solr的字段型別定義有助於更好的配置與使用solr。
字段型別的定義主要包含如下四個方面的資訊:
字段型別在schema.xml
中指定,每乙個字段型別被定義在fieldtype
標籤之間,下面這個例子是乙個text_general
的字段型別:
analyzer> analyzer> fieldtype>
第一行包含了字段型別的名字「text_general」,是由類」solr.textfield」實現的,這個solr
指的是org.apache.solr.schema
或者org.apache.solr.analysis
,也就是說solr.textfield
指的是org.apache.solr.schema.textfield
。
字段型別宣告中,class
已經基本確定了字段型別的行為,當然還可以通過一些屬性引數來增加或改變某些行為。
上面的這個date
型別有兩個額外的屬性」sortmissinglast」和」omitnorms」。
所有的屬性可以歸結為一下三種形式:
屬性說明
值name
用於定義field
的」type」
class
定義了使用何種方式處理該型別資料
positionlncrementgap
對於多值字段,指定多值的間距
整數autogeneratephrasequeries
適用於text
字段,solr是否自動生成短語查詢
布林值docvaluesformat
對於乙個字段型別使用定製的docvaluesformat
postingsformat
對於乙個字段型別使用定製的postingsformat
屬性說明
值預設值
indexed
字段值是否用於查詢
布林值true
stored
字段真實值是否可以被查詢到
布林值true
docvalues
字段值是否列式儲存
布林值false
sortmissingfirst sortmissinglast
沒有指定排序規則時,控制文件排序
布林值false
multivalues
字段是否多值
布林值false
omitnorms
是否忽略不適用該字段的規範
布林值true
omittermfreqandpositions
是否忽略詞頻、位置等
布林值true
omitpositions
類似omittermfreqandpositions
但保留詞頻
布林值true
termvectors
是否保留term vectors
布林值false
termpositions
是否保留term position
布林值false
termoffsets
是否保留term offset
布林值false
termpayloads
是否保留term payload
布林值false
required
是否拒絕空值的字段
布林值false
usedocvaluesasstored
如果欄位是docvalues
,設定為true將允許欄位在fl引數匹配「*」時返回資料
布林值false
字段型別可以指定乙個similarity
,用於對全域性的相似性文件進行評分。預設情況下,不指定相似性的話,使用的是bm25similarity
。
Solr欄位ExternalFileField使用
size large externalfilefield是一種非常靈活的定義排序的一種字段,適用於一些需要臨時提高某些doc的排名,但是又不想顯式的把評分建立到索引裡面,這種需求,在電商的業務裡面,經常會遇到一些特定的節日進行商品大促,需要臨時提高一批索引資料的排名,而又不想重建整個索引,在大促結束...
Solr欄位配置錯誤
在站內搜尋solr schema設計時,有個fts url欄位 之前設計url也會參與檢索和打分 因此其配置資訊如下 其中 type表示型別以及分詞型別。indexed表示是否支援索引。stored表示是否儲存到索引中,這個屬性很關鍵,有些欄位不適合儲存,而且會影響效能。作為返回結果的字段,設為tr...
solr增量更新的字段
在配置增量更新時mysql表裡要有乙個字段,update time能讓solr找到那些行是新增的,在配置檔案裡的sql要加上條件where update time update time欄位要是date型別,但是我們在設計表的時間該字段是long的時間戳。所以當我在進行增量更新時,被更新的總是全量。...