模式工厂配置
<schemaFactory> 在 solrconfig.xml 中
solrconfig.xml
中的 <schemaFactory>
定义您的系统将使用托管架构还是 schema.xml
。
<config>
<schemaFactory>
...
</schemaFactory>
</config>
虽然架构 API 的“读取”功能支持所有架构类型,但对以编程方式进行架构修改的支持取决于所使用的 <schemaFactory/>
。
架构工厂
ManagedIndexSchemaFactory
如果在 solrconfig.xml
文件中未明确声明 <schemaFactory/>
,Solr 会隐式使用 ManagedIndexSchemaFactory
,它默认情况下为 “mutable”
(可编辑),并将架构信息保存在 managed-schema.xml
文件中。
使用 Managed Schema 是使用 Schema API 修改架构的必要条件。但是,使用 Managed Schema 并不意味着您也在 Schemaless 模式(或“架构猜测”模式)中使用 Solr。
Schemaless 模式要求启用 Managed Schema(如果尚未启用),但完整的架构猜测需要其他配置,如 Schemaless 模式 一节中所述。
以下是反映 Solr 默认设置的 schemaFactory
示例
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema.xml</str>
</schemaFactory>
可以通过明确配置 ManagedIndexSchemaFactory
并更改以下选项之一来覆盖默认设置
mutable
-
可选
默认值:
true
控制是否可以对架构数据进行更改。必须将其设置为
true
才能允许使用 Schema API 进行编辑。使用上面显示的默认配置,您可以使用 Schema API 随意修改架构,然后将
mutable
的值更改为false
以“锁定”架构并防止将来进行更改。 managedSchemaResourceName
-
可选
默认值:
managed-schema.xml
架构文件的文件名。文件名可以是除
schema.xml
之外的任何名称,因为该名称已为ClassicIndexSchemaFactory
保留。
更改架构工厂
从 schema.xml 切换到 Managed Schema
如果您有一个使用 ClassicIndexSchemaFactory
的现有 Solr 集合,并且希望转换为使用托管架构,则可以简单地修改 solrconfig.xml
以指定使用 ManagedIndexSchemaFactory
。
一旦 Solr 重新启动并检测到 schema.xml
文件存在,但 managedSchemaResourceName
文件(即“managed-schema.xml”)不存在,现有的 schema.xml
文件将被重命名为 schema.xml.bak
,并且内容将重新写入托管架构文件。
如果您查看结果文件,您将在页面顶部看到以下内容
<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
您现在可以自由使用 Schema API 进行更改,并删除 schema.xml.bak
。
从 Managed Schema 切换到 schema.xml
如果您已启用托管架构启动 Solr,并且想要切换到手动编辑 schema.xml
文件,则应执行以下步骤
-
将
managed-schema.xml
文件重命名为schema.xml
。 -
修改
solrconfig.xml
以替换schemaFactory
类。-
如果存在,则删除任何
ManagedIndexSchemaFactory
定义。 -
添加
ClassicIndexSchemaFactory
定义,如上所示
-
-
重新加载核心。
如果您正在使用 SolrCloud,则可能需要通过 ZooKeeper 修改文件。bin/solr
脚本提供了一种简单的方法,用于从 ZooKeeper 下载文件并在编辑后将其重新上传。有关更多信息,请参阅部分 ZooKeeper 操作。
要完全控制您的 |