我对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服务器中创建文档。
答案 0 :(得分:3)
这可能是由5.x默认情况下使用Managed Schema引起的 - 如果第一次启动Solr时没有出现正确的schema.xml
文件,则创建的模式将接近(如果没有)一个Schemaless模式。
如果未在solrconfig.xml文件中显式声明a,则Solr隐式使用ManagedIndexSchemaFactory,默认情况下为#34; mutable&#34;并将架构信息保存在托管架构文件中。
您可以在ClassicIndexSchemaFactory
中revert 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和 内容被重写到托管模式文件。