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

chr*_*544 16 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
Run Code Online (Sandbox Code Playgroud)

server\solr\my_collection\conf\schema.xml
Run Code Online (Sandbox Code Playgroud)

之后我改变了设置

server\solr\my_collection\conf\solrconfig.xml 
Run Code Online (Sandbox Code Playgroud)

使用

<schemaFactory class="ClassicIndexSchemaFactory"/>
Run Code Online (Sandbox Code Playgroud)

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

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:    fieldType 'booleans' not found in the schema
Run Code Online (Sandbox Code Playgroud)

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

更新: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)
Run Code Online (Sandbox Code Playgroud)

Bru*_*tos 22

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

  • @Nilesh 将 `&lt;schemaFactory class="ClassicIndexSchemaFactory"/&gt;` 添加到 conf 文件夹中的 `solarconfig.xml` (3认同)
  • 听起来很合理,但不知何故对我来说似乎不那么直观(没有使用早期版本并且不得不迁移旧版本的集合).我希望这有助于其他受挫的开发人员.谢谢. (2认同)
  • 我是solr的新手,有人能说出如何使用ClassicIndexSchemaFactory启动solr吗? (2认同)

Aeo*_*lun 10

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

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

对我来说,解决方案是将该<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">部分评论出去solrconfig.xml.

或者,您可以更换solrconfig.xml.