我正在尝试将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)
答案 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类。ManagedIndexSchemaFactory
定义(如果存在)。ClassicIndexSchemaFactory
定义,如下所示 <schemaFactory class="ClassicIndexSchemaFactory"/>
autoCreateFields
中将solrconfig.xml
更新为false,否则您将获得 This IndexSchema is not mutable
错误。
${update.autoCreateFields:false}