默认情况下,多个值将存储在solr文档中的5.x中

时间:2016-06-05 18:40:35

标签: solr

我对Solr很新,我有一个schema.xml文件,我已经定义了所有字段。但这里的问题是字段存储为多个值。我在Solr 4.x中尝试过相同的操作,一切都按预期工作。我在这里错过了什么吗?

<schema name="aem-solr" version="1.5">
<field name="body" type="text_general" indexed="true" stored="true" />
<field name="description" type="text_general" indexed="true" stored="true" />
<field name="contentType" type="text_general" indexed="true" stored="true" />
<field name="lastModified" type="date" indexed="true" stored="true" />
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true" />
<field name="title" type="text_general" indexed="true" stored="true" />
<field name="url" type="text_general" indexed="true" stored="true" />
<field name="publishDate" type="tdate" indexed="true" stored="true" />
<field name="sling_resource_type" type="string" indexed="true" stored="true" multiValued="true" />
<field name="tags" type="text_general" indexed="true" stored="true" multiValued="true" />
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true" />

虽然我使用架构版本1.5,但所有内容都存储为多值,如下所示

 {
    "id": "/content/geometrixx/en/company/bod",
    "title": [
      "Board of Directors"
    ],
    "url": [
      "/content/geometrixx/en/company/bod.html"
    ],
    "lastModified": [
      "2010-11-312T06:17:30Z"
    ],
    "contentType": [
      "page"
    ],
    "tags": [
      "Investor",
      "Business"
    ],
    "_version_": 1536322934890561500
  }

我尝试将multiValued = false属性添加到字段但仍然没有运气。我正在使用SolrJ api连接并在Solr服务器中创建文档。

1 个答案:

答案 0 :(得分:3)

这可能是由5.x默认情况下使用Managed Schema引起的 - 如果第一次启动Solr时没有出现正确的schema.xml文件,则创建的模式将接近(如果没有)一个Schemaless模式。

  

如果未在solrconfig.xml文件中显式声明a,则Solr隐式使用ManagedIndexSchemaFactory,默认情况下为#34; mutable&#34;并将架构信息保存在托管架构文件中。

您可以在ClassicIndexSchemaFactoryrevert to the old behavior by changing the Schema Factory返回(或添加[{1}}的定义)。该链接还包含有关如何在需要使用新的托管架构工厂时使Solr导入旧架构的说明:

  

如果您有一个使用的现有Solr集合   ClassicIndexSchemaFactory,您希望转换为使用托管   schema,您可以简化修改solrconfig.xml以指定使用   ManagedIndexSchemaFactory的内容。一旦Solr重新启动它   检测到schema.xml文件存在,但是   managedSchemaResourceName文件(即:&#34; managed-schema&#34;)不存在,   现有的schema.xml文件将重命名为schema.xml.bak和   内容被重写到托管模式文件。