2014-02-21 164 views
1

在V1.4,如果我在Solr模式定義一個字段:爲什麼Solr默認多值爲真?

<field name="MTID" type="string" /> 

這一領域將是單值。而在v3.5中,它默認爲多主播。原因是什麼? Solr項目是否做出這個決定?

我即將跳入Solr 4或5,這種現象還存在嗎?

注意:我目前在Win7下的Tomcat 6.0上使用Solr 3.5。

回答

0

在兩個不同版本的Solr中使用完全相同的配置文件將爲架構屬性(如multiValued)生成相同的默認行爲。如果你看到不同的行爲,那麼你在某處有一個descrepency ......

1)<field/>聲明上屬性的默認行爲首先由相應的<fieldType/>上的屬性確定。由於您的問題未指定string<fieldType/>聲明在schema.xml文件中,因此它們可能在您的兩個配置中有所不同。

2)如果存在於任一或<field/>定義<fieldType/>沒有定義multiValued屬性,那麼默認行爲來源於由<fieldType/> (eg: solr.StrField`指定的class屬性)

3)爲內置於Solr的場類型(例如:solr.StrField),默認行爲完全由schema.xmlversion屬性驅動。如示例詳細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屬性。

+0

感謝您的回覆。我記得我曾在Schema標記中將版本設置爲3.x,以啓用由於中文字符而導致的Solr的某些功能。也許這是原因。根據你的建議我會檢查我的配置。如果確實是原因。我會回來投票你作爲最佳答案!這個問題讓我煩了一會兒。再次感謝! –

相關問題