managed-schema 檔案詳解

HuDu發表於2020-11-13

managed-schema 檔案詳解

找到配置的Core Admin的目錄下的配置檔案,我這是solrhome\demo_core\conf\managed-schema
在managed-schema.xml檔案中,主要配置SolrCore資料資訊,包括:Field和FiledType的定義等資訊,在solr中,Field和FieldType都需要先定義後使用。

  • field詳解:

Solr 匯入 資料庫資料
name:指定域的名稱(自定義)
type:指定域的型別
index:是否索引
是:(將分好的詞進行索引,索引的目的,就是為了搜尋)
否:(不索引,也就是不對該field域進行搜尋)
stored:是否儲存
是:將field域中的內容儲存到文件域中。儲存的目的,就是為了搜尋頁面顯示取值用的。
否:不將field域中的內容儲存到文件域中。不儲存,則搜尋頁面中沒法獲取該field域中的值
required:是否必須
multiValued:是否多值,比如查詢資料需要關聯多個欄位資料,一個field儲存多個值資訊,必須將multiValued設定為true。

  • dynamicField

Solr 匯入 資料庫資料

name*_i,定義它的type為int,那麼在使用這個欄位的時候,任何以_i結果的欄位都被認為符合這個定義

  • uniqueKey

Solr 匯入 資料庫資料

其中的id是在field標籤中已經定義好的域名,而且該域設定為required為true。一個managed-schema檔案中必須有且僅有一個唯一鍵。

  • copyfield

複製域

應用場景:我們在搜尋時比如輸入java,一篇文章分為標題、簡介、內容等很多欄位,輸入的關鍵字需要定製solr中的域進行檢索,不可能從一個表中將所有的欄位進行索引,因為有些欄位不需要索引,所以出現copyField域,把多個域的關鍵詞複製到同一個域,多個域時,可以放到一個域中。就不用定義那麼多域了。搜尋比較方便。

例項:<copyField source="projectName" dest="keywords"/>
Source:是Field域的名稱
Dest:是destination的縮寫 目標域

  • 使用案例:

    • 1、兩個普通域:title和author
      Solr 匯入 資料庫資料
    • 2、使用複製域,將兩個域進行索引檢索
      Solr 匯入 資料庫資料
    • 3、該域名field name=”text”即使複製域
      Solr 匯入 資料庫資料
  • fieldType(域型別)

Solr 匯入 資料庫資料

solr的fieldtype屬性 javaBean屬性型別
string String
boolean Boolean
pint Integer
pdouble Double
plong Long
pfloat Float
pdata Data
  • 分詞器

Solr 匯入 資料庫資料

Name:指定域型別的名稱
Class:指定該域型別對應的solr的型別
Analyzer:指定分詞器
Type:index、query,分別指定搜尋和索引時的分析器
Tokenizer:指定分詞器
Filter:指定過濾器

本作品採用《CC 協議》,轉載必須註明作者和本文連結