Solr模式元素

2018-11-11 17:31 更新

本節(jié)介紹在前面幾節(jié)中未提及的 schema.xml 的其他幾個重要的模式元素。

唯一的鍵

uniqueKey 元素指定哪個字段是文檔的唯一標識符。雖然 uniqueKey 不是必需的,但它幾乎總是由您的應用程序設(shè)計。例如,如果您將在索引中更新文檔,則應使用 uniqueKey。

您可以通過命名來定義唯一的關(guān)鍵字段:

<uniqueKey>id</uniqueKey>

架構(gòu)默認值和 copyFields 不能用于填充 uniqueKey 字段。在 fieldType 中 uniqueKey 不得進行分析。您可以使用 UUIDUpdateProcessorFactory 自動生成具有 uniqueKey的值。

此外,如果 uniqueKey 字段被使用,則該操作將失敗,但是是多值的(或者從 fieldtype 繼承了多值性)。但是,只要適當?shù)厥褂迷撟侄?,uniqueKey 將繼續(xù)工作。

相似

相似性是一個 Lucene 類,用于在搜索中對文檔進行評分。

每個集合都有一個“全局”相似性,默認情況下,Solr 使用一個隱式 SchemaSimilarityFactory,它允許將單個字段類型配置一個“每類型”特定的相似性,并隱式使用 BM25Similarity 對任何字段類型沒有明確的相似性。

可以通過在 schema.xml 中的頂級 <similarity/> 元素(在任何單個字段類型之外) 來重寫此默認行為。這個相似性聲明可以直接引用具有無參數(shù)構(gòu)造函數(shù)的類的名稱,如下例中顯示 BM25Similarity:

<similarity class="solr.BM25SimilarityFactory"/>

或者引用 SimilarityFactory 實現(xiàn),它可能采用可選的初始化參數(shù)::

<similarity class="solr.DFRSimilarityFactory">
  <str name="basicModel">P</str>
  <str name="afterEffect">L</str>
  <str name="normalization">H2</str>
  <float name="c">7</float>
</similarity>

在大多數(shù)情況下, 如果您的 schema.xml 還包括字段類型特定的 <similarity/> 聲明,則指定全局級別相似性會導致錯誤。一個重要的例外是,您可以明確地聲明一個  SchemaSimilarityFactory,并指定默認行為對于所有不使用字段類型名稱 (由 defaultSimFromFieldType 指定) 聲明顯式相似性的字段類型。具有特定相似性的配置:

<similarity class="solr.SchemaSimilarityFactory">
  <str name="defaultSimFromFieldType">text_dfr</str>
</similarity>
<fieldType name="text_dfr" class="solr.TextField">
  <analyzer ... />
  <similarity class="solr.DFRSimilarityFactory">
    <str name="basicModel">I(F)</str>
    <str name="afterEffect">B</str>
    <str name="normalization">H3</str>
    <float name="mu">900</float>
  </similarity>
</fieldType>
<fieldType name="text_ib" class="solr.TextField">
  <analyzer ... />
  <similarity class="solr.IBSimilarityFactory">
    <str name="distribution">SPL</str>
    <str name="lambda">DF</str>
    <str name="normalization">H2</str>
  </similarity>
</fieldType>
<fieldType name="text_other" class="solr.TextField">
  <analyzer ... />
</fieldType>

在上面的示例中,IBSimilarityFactory(使用基于信息的模型)將用于 text_ib 類型的任何字段,而 DFRSimilarityFactory(隨機的分歧)將用于 text_dfr 類型的任何字段,以及使用類型的任何字段,該類型沒有明確指定 <similarity/>。

如果 SchemaSimilarityFactory 是通過配置 defaultSimFromFieldType 顯式聲明的,則 BM25Similarity 將隱式用作默認值。

除了此頁面上提到的各個工廠,還有其他幾種類似的實現(xiàn),如:SweetSpotSimilarityFactory、ClassicSimilarityFactory 等等。有關(guān)詳細信息,請參見 Solr Javadocs 的相似工廠。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號