Solr欄位型別field type的定義

2021-09-07 19:31:45 字數 2127 閱讀 1833

摘要: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的時間戳。所以當我在進行增量更新時,被更新的總是全量。...