在V1.4,如果我在Solr模式定義一個字段:爲什麼Solr默認多值爲真?
<field name="MTID" type="string" />
這一領域將是單值。而在v3.5中,它默認爲多主播。原因是什麼? Solr項目是否做出這個決定?
我即將跳入Solr 4或5,這種現象還存在嗎?
注意:我目前在Win7下的Tomcat 6.0上使用Solr 3.5。
在V1.4,如果我在Solr模式定義一個字段:爲什麼Solr默認多值爲真?
<field name="MTID" type="string" />
這一領域將是單值。而在v3.5中,它默認爲多主播。原因是什麼? Solr項目是否做出這個決定?
我即將跳入Solr 4或5,這種現象還存在嗎?
注意:我目前在Win7下的Tomcat 6.0上使用Solr 3.5。
在兩個不同版本的Solr中使用完全相同的配置文件將爲架構屬性(如multiValued
)生成相同的默認行爲。如果你看到不同的行爲,那麼你在某處有一個descrepency ......
1)<field/>
聲明上屬性的默認行爲首先由相應的<fieldType/>
上的屬性確定。由於您的問題未指定string
的<fieldType/>
聲明在schema.xml
文件中,因此它們可能在您的兩個配置中有所不同。
2)如果存在於任一或<field/>
定義<fieldType/>
沒有定義multiValued
屬性,那麼默認行爲來源於由<fieldType/> (eg:
solr.StrField`指定的class
屬性)
3)爲內置於Solr的場類型(例如:solr.StrField
),默認行爲完全由schema.xml
的version
屬性驅動。如示例詳細schema.xml
附帶的Solr ...
<schema name="example" version="1.5">
<!-- attribute "name" is the name of this schema and is only used for display purposes.
version="x.y" is Solr's version number for the schema syntax and
semantics. It should not normally be changed by applications.
1.0: multiValued attribute did not exist, all fields are multiValued
by nature
1.1: multiValued attribute introduced, false by default
1.2: omitTermFreqAndPositions attribute introduced, true by default
except for text fields.
1.3: removed optional field compress feature
1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
behavior when a single string produces multiple tokens. Defaults
to off for version >= 1.4
1.5: omitNorms defaults to true for primitive field types
(int, float, boolean, string...)
-->
...所以如果<field/>
和<fieldType/>
聲明在你的configs是一樣的,要檢查的最後一件事是,如果你已經修改的值您的<schema/>
根元素上的version
屬性。
感謝您的回覆。我記得我曾在Schema標記中將版本設置爲3.x,以啓用由於中文字符而導致的Solr的某些功能。也許這是原因。根據你的建議我會檢查我的配置。如果確實是原因。我會回來投票你作爲最佳答案!這個問題讓我煩了一會兒。再次感謝! –