2017-02-13 54 views
2

我在可用的字段類型之間存在一些混淆。 string vs stringsint vs ints以及其他數據類型。字段類型字符串與字符串

以下4點有什麼區別?

<field name="string_multi" type="string" multiValued="true" indexed="true" stored="true"/> 
<field name="string_single" type="string" indexed="true" stored="true"/> 
<field name="strings_multi" type="strings" multiValued="true" indexed="true" stored="true"/> 
<field name="strings_single" type="strings" indexed="true" stored="true"/> 

鑑於我有文檔,我應該爲我的字段名爲hashtags聲明什麼?

String multivaluedstrings multivaluestrings without multivalue,?

{ 
     "polarity":0.0, 
     "text":"RT @socialistudents: Vlad - we go to NUS conference not just as individuals but as members of Socialist Students #SocStu17", 
     "created_at":"Sun Feb 12 19:28:34 +0000 2017", 
     "hashtags":[ 
     "hashtag1", 
     "hashtag2" 
     ], 
     "subjectivity":0.0, 
     "retweet_recount":4, 
     "id":830861171582439424, 
     "favorite_count":0 
} 

回答

3

那麼,如果你在談論當您使用Solr的默認模式,它是由默認的字段類型,如果你真的看字段類型定義,它這樣說:

<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" /> 
<fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true" docValues="true" /> 

編輯 :第二個示例應該是strings而不是string

因此,它們實際上具有相同的類(solr的默認字符串類solr.StrField),因此它們是相同的類型 數據的。唯一的區別是「字符串」是多值的,這意味着您可以在一個字段中存儲多個離散值。

在你的例子中,你的主題標籤數據似乎只是一個單獨的hashtag值的數組,所以既然你想在一個字段中存儲多個離散的字符串,那麼'字符串'將是它的選擇,因爲它是multiValued。

+2

定義'字段名稱'時會感到困惑。因此,您可以將屬性'multiValued'聲明爲這樣的''。那麼,他們原來是一樣的。只是有點令人困惑,並且在'field name'期間使'multiValued'變得冗餘。由於'multiValued'將由'字段類型'決定。 –

+0

是的,對不起,我錯過了第二個's'。固定 – Jayce444

+0

是的,你也可以在場上宣佈'多值'。因此,根據您的標籤數據結構,您可以在您的字段定義中放置'multiValued =「true」' – Jayce444