使用schema.xml而不是Solr 5.1.X的托管模式

时间:2015-06-05 18:08:20

标签: xml solr

我正在尝试将schema.xml与最新版本的Solr(5.1.0)一起使用。似乎默认情况下Solr 5.1.0使用托管模式,但我想将schema.xml用于特定集合。

所以我创建了一个新的集合(在windows上使用solr create -c my_collection并从

复制schema.xml)
server\solr\configsets\basic_configs\conf\schema.xml

server\solr\my_collection\conf\schema.xml

之后我改变了

中的设置
server\solr\my_collection\conf\solrconfig.xml 

使用

<schemaFactory class="ClassicIndexSchemaFactory"/>

执行此操作后,我在启动服务器时遇到异常:

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:    fieldType 'booleans' not found in the schema

我在这里做了什么非常错的事吗?这种逻辑不应该起作用吗?

更新: Stractrace看起来像这样:

org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:885)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:652)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:518)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:283)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:277)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$TypeMapping.populateValueClasses(AddSchemaFieldsUpdateProcessorFactory.java:244)
at org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory.inform(AddSchemaFieldsUpdateProcessorFactory.java:170)
at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:620)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:868)

3 个答案:

答案 0 :(得分:22)

问题是您引用了booleans文件中未定义的字段类型schema.xml。创建核心时,会在managed-schema中创建文件server\solr\my_collection\conf\。将此文件重命名为schema.xml并使用ClassicIndexSchemaFactory重新启动solr,它将正常工作。

答案 1 :(得分:10)

我在这里遇到的问题与实际使用booleans字段类型无关。问题是新升级的solrconfig.xml文件默认启用了未知字段的处理器,需要booleans字段类型,可能还需要其他字段。

这些都是默认情况下在新示例schema.xml中定义的,但很可能不在您的旧schema.xml中。

我的解决方案是在<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">中注释掉solrconfig.xml部分。

或者,您可以直接替换solrconfig.xml

答案 2 :(得分:0)

schema.xml中未定义字段类型{booleans}。

修复它的步骤,

  • 删除集合
  • managed-schema文件重命名为schema.xml
  • 修改solrconfig.xml以替换schemaFactory类。
  • a)删除任何ManagedIndexSchemaFactory定义(如果存在)。
  • b)添加ClassicIndexSchemaFactory定义,如下所示

<schemaFactory class="ClassicIndexSchemaFactory"/>

  • autoCreateFields中将solrconfig.xml更新为false,否则您将获得

This IndexSchema is not mutable错误。

${update.autoCreateFields:false}

  • 重新创建集合。