Solr 6 的主要變更
在開始遷移您的設定和索引之前,需要考慮 Solr 6 中的一些重大變更。
有數百個變更,因此詳細檢閱Solr 升級注意事項章節以及 Solr 執行個體中的 CHANGES.txt 檔案,將有助於您規劃遷移至 Solr 6。本節嘗試強調您應該注意的一些主要變更。
Solr 6 中新功能的重點
Solr 6 中的一些主要改進包括
串流運算式
在 Solr 5 中導入的串流運算式,可讓您查詢 Solr 並取得結果作為資料串流,並依要求排序和彙總。
Solr 6 中新增了幾種新的運算式類型
-
使用類似 MapReduce 的混洗的平行運算式,以更快地處理高基數字段。
-
支援連續推送或拉取串流的守護程式運算式。
-
進階平行關聯代數,如分散式聯結、交集、聯集和補集。
-
發佈/訂閱訊息傳遞。
-
JDBC 連線以從其他系統提取資料,並與 Solr 索引中的文件聯結。
SQL 查詢
Solr 6 中的新功能是建立在串流運算式之上的SQL 支援,以便能夠將 SQL 查詢傳送至 Solr。SQL 陳述式會即時編譯為串流運算式,提供串流運算式請求可用的完整彙總範圍。隨附 JDBC 驅動程式,可讓您使用 SQL 用戶端和資料庫視覺化工具來查詢您的 Solr 索引,並將資料匯入其他系統。
圖形查詢剖析器
新的graph
查詢剖析器可讓您對使用 Solr 文件建模的有向(循環)圖形進行圖形遍歷查詢。
DocValues
Solr 範例設定檔中大多數的非文字欄位類型現在預設使用 DocValues。
需要 Java 8
Solr 6 (以及 SolrJ 用戶端程式庫) 支援的最低 Java 版本現在是 Java 8。
索引格式變更
Solr 6 不支援讀取 Lucene/Solr 4.x 及更早版本的索引。如果您在索引中仍有舊的 4x 格式的區段,請務必執行 Solr 5.5 隨附的 Lucene IndexUpgrader
。或者,使用 Solr 5.5 完全最佳化您的索引,以確保它僅包含一個最新的索引區段。
管理架構現在是預設值
當 solrconfig.xml
沒有明確定義 <schemaFactory/>
時,Solr 的預設行為現在取決於該 solrconfig.xml
中指定的 luceneMatchVersion
。當 luceneMatchVersion < 6.0
時,為了向後相容,將繼續使用 ClassicIndexSchemaFactory
,否則將使用 ManagedIndexSchemaFactory
的實例。
此變更最顯著的影響是:
-
修改為使用
luceneMatchVersion >= 6.0
,但沒有明確配置ClassicIndexSchemaFactory
的現有solrconfig.xml
檔案,其schema.xml
檔案將會自動升級為managed-schema
檔案。 -
現在預設會啟用透過 Schema API 進行的架構修改。
請檢閱 架構工廠設定 章節以取得更多詳細資訊。
預設相似度變更
當架構沒有明確定義全域 <similarity/>
時,Solr 的預設行為現在取決於 solrconfig.xml
中指定的 luceneMatchVersion
。當 luceneMatchVersion < 6.0
時,將使用 ClassicSimilarityFactory
的實例,否則將使用 SchemaSimilarityFactory
的實例。最值得注意的是,此變更表示使用者可以利用每個欄位類型相似度的宣告,而無需也明確宣告全域使用 SchemaSimilarityFactory
。
無論是明確宣告還是用作隱式全域預設,當欄位類型未宣告明確的 <similarity />
時,SchemaSimilarityFactory
的隱式行為也已更改為取決於 luceneMatchVersion
。當 luceneMatchVersion < 6.0
時,將使用 ClassicSimilarity
的實例,否則將使用 BM25Similarity
的實例。可以在 SchemaSimilarityFactory
宣告中指定 defaultSimFromFieldType
初始化選項來變更此行為。請檢閱 SchemaSimilarityFactory
的 Javadoc 以取得更多詳細資訊。
複本 & 分片刪除命令變更
DELETESHARD 和 DELETEREPLICA 現在預設為刪除它們刪除的任何複本的實例目錄、資料目錄和索引目錄。如果您希望在使用這些命令時保留磁碟上的所有資料,請檢閱 Collections API 文件,以了解有關防止此行為的新請求參數的詳細資訊。
已移除 facet.date.* 參數
Solr 3.x 中已棄用的 facet.date
參數 (以及相關的 facet.date.*
參數) 已完全移除。如果您尚未切換到使用等效的 facet.range
功能,則必須立即執行此操作,才能升級。