Solr可以看作是一個非關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)是保存在schema中,而每個schema里面的列就是filed呼渣。Field可以在schema.xml中定義:
從上面可以看到schema.xml文件中三個重要的部分為:
<fields>,包含了<field>、<dynamicField>
<uniqeKey>定義主鍵
<types>定義每個field的類型歇式,以及如何對這個field進行解析(參照lucene中的FieldType)
Solr中的Field與Lucene中的是對應的,只需要了解相應的Field在Lucene中怎樣配置即可胡野。
下面介紹Solr中對Field的一些擴展支持:
Multivalued Field
多值Field材失,通常在同一個文檔中,每個Field只存在一個值硫豆,如果將這個Field的多值屬性設(shè)置為true龙巨,則這個Field可以保存多個值,例如:
在一篇文檔中有如下屬性:
Link有兩個值熊响,那么在schema.xml中可以設(shè)置一個為link的Field:
Dynamic Field
在<dynamicField>標簽下定義旨别,可以設(shè)置模糊匹配,例如:
在Document中所有后綴為_ss的field都適用這個Field.
例如schema.xml中內(nèi)容如下:
可以看到所有以facebook為前綴和twitter為前綴的field的定義都是一樣的汗茄,所以可以對原文檔中對應的field定義如下:
那么在schema.xml中對應的內(nèi)容就可以用以下語句替換:
Copy Field
就是根據(jù)一個類型的Field復制到另外一個Field秸弛。
<copyField>不是在<fields>標簽的子元素,而是在外面定義:
Solr對非文本的結(jié)構(gòu)化數(shù)據(jù)也進行了支持剔难,具體可以查閱Solr文檔胆屿。Solr中常用的Field如下:
學習Solr中的Field時候要對比關(guān)系型數(shù)據(jù)庫(如Mysql),以及結(jié)合Lucene中的Field偶宫。