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