字段类型字符串与字符串

Gav*_*vin 5 solr solr6

我在可用的字段类型之间有些混淆。stringvsstringsintvsints等其他数据类型。

以下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"/>
Run Code Online (Sandbox Code Playgroud)

鉴于我有文档,我应该为名为 的字段声明什么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
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*444 6

好吧,如果您正在谈论使用 Solr 的默认架构时创建的默认字段类型,如果您实际查看 fieldType 定义,它会说:

<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" />
<fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true" docValues="true" />
Run Code Online (Sandbox Code Playgroud)

编辑:第二个例子应该是strings代替string

所以它们实际上具有相同的类(solr 的默认字符串类solr.StrField),因此它们是相同类型的数据。唯一的区别是“字符串”是多值的,这意味着您可以在一个字段中存储多个离散值。

在您的示例中,您的主题标签数据似乎只是一组单个主题标签值,因此,由于您想在一个字段中存储多个离散字符串,因此可以选择“字符串”,因为它是多值的。

  • 混淆是在定义“字段名称”时。因此,您可以声明属性 `multiValued` 为这样的 `&lt;field name="your_field_name" type="strings" multiValued="true" sortMissingLast="true" docValues="true" indexed="false" required="true" 存储="真"/&gt;`。嗯,结果它们是一样的。只是有点令人困惑,并使“字段名称”期间的“multiValued”变得多余。由于“multiValued”将由“字段类型”决定 (2认同)