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.xmlSchema 文件的名称。该名称可以是除
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 操作部分。
|
为了完全控制你的 |