Solr 6.7學習筆記(02)-- 配置文件 managed-schema (schema.xml)(1)


剛學Solr(版本6.7.0),新建一個core時,提示要求schema.xml文件,我找了半天也沒在源碼包中找到名為schema.xml的文件。這個版本其實用的是managed-schema文件,沒學過以前的版本,所以不知道是從哪個版本開始不使用schema.xml的,其實內容都一樣,搞不懂為啥要換個名字,而且內容格式是xml,但是文件名卻沒有.xml的后輟。個人感覺是吃飽了撐的。

      為了學習方便,我是在windows下做的,以下{Solr.home}是指解壓后的文件目錄。在{Solr.home}\bin下運行 solr -e techproducts, 這樣我們就能在{Solr.home}\example\techproducts\solr\techproducts\conf 下找到managed-schema文件,文件有很詳細的注釋,下面的文件就是以那個文件為基礎進行的一些翻譯。

      邊學邊寫,關於Solr的學習筆記中,有很多內容來自《Solr in action》和apache給出的guide,加上了一些自己的理解,有可能有表達錯誤的地方,以后學深入,再回頭來改。

      managed-schema中主要有以下幾種元素:

     1. <field>

            定義Solr索引的document里的字段,這個一般是根據具體的搜索應用來定義需要有什么字段。有三個特殊一點的字段,分別是:"_version_", "_root_" 和 "id",詳見最后面的sample文件。

<field>中的屬性
屬性 默認值  說明
name   必須,不能取名score,前后輟為下划線的名字(如:_VERSION_)為保留名字
type   必須。值為定義的<fieldType>
indexed  true 是否進行索引。 true的時候進行索引。
stored  true 是否存儲。如果此字段的值需要顯示在搜索結果中,則需要進行存儲。
docValues  false

是否需要存儲docValues。docValues用於提升sorting, faceting, grouping, function queries

等性能,現在僅支持StrField, UUIDFiel和所有的Trie*Fields和 *PointFields、日期字段和枚舉字段,

此值為true的字段要求此字段 multiValued=false,

並且 (required=true或設置了default的值).

multiValued  false  是否有多個值。
omitNorms    見下面的說明
termVectors  false  設置為true,使More Like This特性生效,會極大的增加索引文件的大小。
termPositions  false  通常用於提高高亮搜索結果這一功能的性能。設置為true,會增加索引文件的大小。
termOffsets  false  通常用於提高高亮搜索結果這一功能的性能。設置為true,會增加索引文件的大小。
termPayloads  false  通常用於提高高亮搜索結果這一功能的性能。設置為true,會增加索引文件的大小。
required  false  如果設置為true,則索引時,如果此字段值為null,則會報錯。
default    此字段的默認值。通常用於記錄索引生成的當前時間

sortMissingFirst

sortMissingLast

false 需要對搜索結果根據某個字段排序時,如果某條記錄的此字段值為空,則該記錄是排在搜索結果的最前/最后

omitTermFreqAndPositions

  對所有不是文本類型的字段,默認為TRUE

omitPositions

  與omitTermFreqAndPositions相似,只是僅忽略位置信息

useDocValuesAsStored

 

當docValues=true時,設置此值為TRUE,則如果返回的字段列表使用了通配符,即使此字段設置了stored=false,

此字段還是會出現在返回的結果里,

large

false

設置為TRUE時,需要設置stored=true和multiValued=false, 表示此字段是大字段,會被懶加載。

通常用於此字段的內容可能比較大,不需要載入內存

             對一些屬性的詳細點的說明:     

             omitNorms:

                   norm是基於document length norm,document boost和field boost計算出的浮點(float)值。這里的boost可以理解為權重。document length norm用於為較小的document增加權重(權重較大的話,計算搜索結果的score值會更高一點)。也就是說如果有一個比較小的document和一個比較長的document都符合搜索條件,Lucene會認為那個較小的document相對於較長的document更新符合搜索條件。omitNorms是指忽略norm,所以設為false時,較小的document和較長的document有相同的權重。因此如果我們需要為某個字段在索引時進行加權(boost),則應該設置為false。當字段類型為基本類型(比如:int, float,date,bool. string)時此默認值是true。

             termVectors, termPositions, termOffsets 和 termPayloads :

                   此四個屬性通常用於 hl.useFastVectorHighlighter為true時的情況,會較大地增加索引大小

             omitTermFreqAndPositions:

                   如果為TRUE,索引時將忽略頻率、位置、負載等信息,這有助於提升不需要這些信息的字段的性能,也會減少索引大小。但是查詢如果依賴於字段的位置信息,則會導致查詢不到相關document。

 

上一篇:

Solr6.7 學習筆記(01) -- 目錄結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM