在SolrConfig中的架構(gòu)工廠定義(Schema Factory Definition)

2018-12-09 11:55 更新

Solr的架構(gòu)API使遠程客戶端可以通過REST接口訪問架構(gòu)信息并進行架構(gòu)修改。

其他特性,如Solr的Schemaless Mode,也可以在運行時通過編程方式進行架構(gòu)修改。

使用托管架構(gòu)需要能夠使用架構(gòu)API來修改您的架構(gòu)。然而,使用托管架構(gòu)本身并不意味著您也在無架構(gòu)模式(或“架構(gòu)猜測”模式)中使用Solr。

無架構(gòu)模式需要啟用托管架構(gòu)(如果尚未建立模式),但是完全模式猜測需要額外配置,如“無模式模式”部分中所述。

盡管架構(gòu)API的“讀取”特性對于所有架構(gòu)類型都是支持的,但是支持以編程方式進行架構(gòu)修改依賴于正在使用的<schemaFactory/>。

Solr默認使用托管架構(gòu)

當<schemaFactory/>沒有在solrconfig.xml文件中顯式聲明時,Solr隱式地使用ManagedIndexSchemaFactory,它是默認的"mutable"并將模式信息保存在一個managed-schema文件中。

 <!-- An example of Solr's implicit default behavior if no
      no schemaFactory is explicitly defined.
 -->
  <schemaFactory class="ManagedIndexSchemaFactory">
    <bool name="mutable">true</bool>
    <str name="managedSchemaResourceName">managed-schema</str>
  </schemaFactory>

如果您想明確配置 ManagedIndexSchemaFactory,下列選項可用:

  • mutable - 控制是否可以對架構(gòu)數(shù)據(jù)進行更改。這必須設(shè)置為true,以允許使用Schema API進行編輯。
  • managedSchemaResourceName - 一個可選參數(shù),默認為“managed-schema”,并為架構(gòu)文件定義一個新的名稱,該名稱可以是除“schema.xml”以外的任何其他名稱。

使用上面所示的默認配置,您可以使用Schema API根據(jù)需要盡可能多地修改架構(gòu),如果您希望將架構(gòu)“鎖定”到位并防止將來發(fā)生更改,則稍后將mutable值更改為false。

經(jīng)典schema.xml

使用托管架構(gòu)的替代方法是顯式配置一個ClassicIndexSchemaFactory。ClassicIndexSchemaFactory 需要使用schema.xml配置文件,并且不允許在運行時對架構(gòu)進行任何編程式更改。該schema.xml文件必須手動編輯,僅在加載集合時才加載。

<schemaFactory class="ClassicIndexSchemaFactory"/>

從schema.xml切換到托管架構(gòu)

如果您有一個現(xiàn)有的Solr集合使用了ClassicIndexSchemaFactory,并且您希望轉(zhuǎn)換為使用托管模式,則可以簡單地修改solrconfig.xml以指定使用ManagedIndexSchemaFactory。

一旦Solr重新啟動,它檢測到schema.xml文件存在,但managedSchemaResourceName文件(即:“managed-schema”)不存在,現(xiàn)有的schema.xml文件將被重命名為schema.xml.bak,內(nèi)容被重新寫入托管的架構(gòu)文件。如果您查看生成的文件,您會在頁面頂部看到這個:

<!-- Solr managed schema - automatically generated - DO NOT EDIT -->

您現(xiàn)在可以隨意使用Schema API,只需要進行更改,然后刪除schema.xml.bak。

從托管架構(gòu)切換到手動編輯的schema.xml

如果您啟動了Solr并啟用了托管架構(gòu),并且想要切換到手動編輯schema.xml文件,則應(yīng)執(zhí)行以下步驟:

  1. 重命名managed-schema文件為:schema.xml。
  2. 修改solrconfig.xml以替換schemaFactory類。刪除任何ManagedIndexSchemaFactory定義,如果存在。添加一個ClassicIndexSchemaFactory,如上所示的定義。
  3. 重新加載核心。

如果您正在使用SolrCloud,則可能需要通過ZooKeeper修改文件。該bin/solr腳本提供了一種簡單的方法來從ZooKeeper下載文件并在編輯之后將其上傳。有關(guān)更多信息,請參閱ZooKeeper操作部分。

要完全控制schema.xml文件,您可能還需要禁用架構(gòu)猜測,這可以在編制索引期間將未知字段添加到架構(gòu)中。在“無架構(gòu)模式”一節(jié)中討論了啟用此功能的屬性。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號