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 類型都支援 Schema API 的「讀取」功能,但以程式方式進行 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 模式一節所述。
以下是一個 schemaFactory
的範例,反映 Solr 的預設值
<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
如果您現有的 Solr 集合使用 ClassicIndexSchemaFactory
,且您希望轉換為使用受管理 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
如果您已啟用管理 Schema 啟動 Solr,而您想要切換為手動編輯 schema.xml
檔案,您應該採取以下步驟
-
將
managed-schema.xml
檔案重新命名為schema.xml
。 -
修改
solrconfig.xml
以替換schemaFactory
類別。-
移除任何現有的
ManagedIndexSchemaFactory
定義。 -
加入一個
ClassicIndexSchemaFactory
定義,如上方所示。
-
-
重新載入核心。
如果您使用 SolrCloud,您可能需要透過 ZooKeeper 修改檔案。bin/solr
腳本提供了一個簡單的方式,可以從 ZooKeeper 下載檔案,並在編輯後將它們上傳回去。請參閱ZooKeeper 操作章節以獲取更多資訊。
為了完全掌控您的 |