綱要設計器

「綱要設計器」畫面可讓您使用範例資料以互動方式設計新的綱要。

image
圖 1。「綱要設計器」畫面

「綱要設計器」畫面上有許多面板,可在您變更綱要時提供立即回饋,包括:

  • 上傳/貼上範例文件以尋找欄位,並猜測正確的欄位類型和索引策略

  • 「綱要編輯器」樹狀結構,用於編輯「欄位」、「動態欄位」、「欄位類型」和支援檔案

  • 「文字分析」面板,用於根據選取的欄位顯示範例文本的文字分析管道

  • 「查詢測試器」面板,用於查看綱要變更如何影響查詢比對、排序、刻面和命中醒目提示

  • 「顯示變更」對話方塊,用於在發佈之前檢視設計器所做的所有變更報告

「綱要設計器」可讓您編輯現有的綱要,但其主要目的是協助您安全地從範例資料設計新的綱要。您可以安全地試驗變更,並立即查看對查詢結果的影響。一旦使用已發佈的綱要將資料編入索引,您可以對綱要進行的變更類型就會受到嚴格限制,而無需完整重新編製索引。在設計新綱要時,「綱要設計器」會在您進行變更時自動重新編製範例資料的索引。但是,設計器不會重新編製使用已發佈綱要的集合中的資料索引。

授權要求

如果為您的 Solr 安裝啟用「基於規則的授權外掛程式」,則使用者需要具有 config-editconfig-read 權限才能使用「綱要設計器」。

入門

首次進入「綱要設計器」時,系統會提示您建立新的綱要。

image

選擇一個簡短的名稱,以反映新綱要的預期使用案例。您需要選擇一個來源綱要進行複製,作為新綱要的起點。Solr 包含一個 _default 綱要,它為建置搜尋應用程式的自訂綱要提供了一個很好的起點。一旦發佈綱要,即可用於建立新的綱要,並將列在對話方塊中的「從複製」下拉式清單中。

建立新的綱要後,下一步是上傳或貼上您打算編入 Solr 索引的資料範例。「綱要設計器」支援 JSON、CSV、TSV、XML 和 JSON 行 (jsonl)。

image

將範例文件貼到文字區域的優點是,您可以編輯範例,並立即在分析的綱要中查看變更的影響。如果您有大型或許多範例文件,則上傳功能很有用;「綱要設計器」API 允許最多 1,000 個範例文件或最大 5MB 的上傳,但在大多數情況下,您只需要少數幾個文件即可開始。

按一下 分析文件 按鈕,將範例文件提交至「綱要設計器」API 以產生新的綱要。

暫時的 Configset 與集合

在幕後,「綱要設計器」API 會在 Zookeeper 中建立暫時的 Configsets (綱要 + solrconfig.xml + 支援檔案)。此外,「綱要設計器」API 會建立一個暫時的集合,其中包含一個分片和一個副本,以保留範例文件。這些暫時資源會保存到磁碟,並且會一直存在,直到發佈綱要或使用「綱要設計器」API 清理端點 (/api/schema-designer/cleanup) 手動刪除為止。

如果您在設計新綱要時關閉瀏覽器畫面,當您返回時,該綱要仍會存在。只需在選取方塊中選擇您先前建立的綱要名稱,您的綱要就會載入到設計工具 UI 中。

image

先前上傳的範例文件會被索引到臨時集合中,即使它們不會顯示在文字區域中。

點擊「查詢結果」面板上的「編輯文件」按鈕,將索引文件的 JSON 表示形式載入到文字區域中。

信任的配置集

當從 solrconfig.xml 載入額外程式庫並使用 Solr 的某些功能時,需要配置集信任。有關信任的配置集的更多資訊,請參閱 配置集 API 章節。

使用綱要設計工具 API 對配置集的信任具有與使用 配置集上傳 API 相同的效果。

  • 如果您已通過驗證

    • 如果您的來源配置集受信任的,那麼您正在修改的臨時配置集將保持受信任狀態。

    • 如果您的來源配置集不是受信任的,那麼您正在修改的臨時配置集將永遠不會受信任。

  • 如果您未通過驗證

    • 為您建立的臨時配置集將不會受信任。

發佈臨時配置集時,臨時配置集的信任狀態將用於設定永久配置集的信任狀態。

迭代式張貼範例文件

如果您有多個檔案散佈的範例文件,您可以將它們 POST 到綱要設計工具 API,然後在設計工具 UI 中載入您的綱要來設計您的綱要。以下是如何使用 API「準備」新綱要,然後迭代式地將 Solr 的 techproducts 範例檔案張貼到綱要設計工具後端的範例

#!/bin/bash

SOLR_INSTALL_DIR="path/to/solr/install"

DIR_WITH_SAMPLE_FILES="$SOLR_INSTALL_DIR/example/exampledocs"

SOLR_URL=https://127.0.0.1:8983

MY_NEW_SCHEMA="myNewSchema"

echo "Preparing new schema: ${MY_NEW_SCHEMA}"
curl -s -o /dev/null -w "%{http_code}" -XPOST \
  "$SOLR_URL/api/schema-designer/prep?configSet=${MY_NEW_SCHEMA}&copyFrom=_default"
echo ""

SAMPLE_FILES=( $(ls ${DIR_WITH_SAMPLE_FILES}/*.{xml,csv,json,jsonl}) )
for f in "${SAMPLE_FILES[@]}"
do
  echo "POST'ing contents of $f to Schema Designer analyze endpoint ..."
  curl -s -o /dev/null -w "%{http_code}" -XPOST \
    "$SOLR_URL/api/schema-designer/analyze?configSet=${MY_NEW_SCHEMA}" -d @"$f"
  echo ""
done

將範例文件傳送到綱要設計工具後端後,您可以在瀏覽器的綱要設計工具畫面中開啟已準備好的綱要。

綱要設計工具 API 主要旨在支援 UI 中的互動式體驗,而不是由開發人員以程式方式使用。若要以程式方式建立和管理配置集和綱要,請參閱 配置集 API綱要 API 章節。

綱要編輯器

分析您的範例文件後,綱要設計工具會在中間面板的「綱要編輯器」中載入綱要。編輯器會將綱要呈現為由欄位、動態欄位、欄位類型和檔案組成的樹狀元件。有關綱要物件的更多資訊,請參閱 欄位

image
綱要 vs. 配置集

配置集包含綱要,因此技術上來說,綱要設計工具會在幕後使用配置集。但是,配置集更像是一種技術實作細節,您在設計新的搜尋應用程式時,應主要關注欄位及其類型。因此,綱要設計工具主要關注配置集的綱要方面,而不是在 UI 中公開配置集的複雜性。

當您按一下綱要編輯器樹狀結構的根節點時,您可以微調最上層綱要屬性,包括

  • 語言:_default 綱要包含多種常見語言的文字欄位。您可以將所有文字分析器包含在您的綱要中,或根據您的搜尋應用程式需要支援的語言選擇子集。設計工具將移除您不需要的語言的所有不必要的欄位類型。有關文字分析和語言的更多資訊,請參閱 語言分析

  • 動態欄位允許 Solr 索引您未在綱要中明確定義的欄位。動態欄位可以透過為您可以新增到 Solr 的文件提供一些彈性,使您的應用程式不那麼脆弱。建議為您的綱要啟用預設的動態欄位集。取消選取此選項會從您的綱要中移除所有動態欄位。有關動態欄位的更多資訊,請參閱 動態欄位

  • 欄位猜測(又稱「無綱要模式」)允許 Solr 為索引期間遇到的未知欄位偵測「最佳」欄位類型。欄位猜測也會執行一些欄位轉換,例如從欄位名稱中移除空格。如果您使用綱要設計工具根據範例文件建立您的綱要,您可能不需要啟用此功能。但是,如果停用此功能,您需要確保傳入的資料與綱要完全匹配,否則可能會發生索引錯誤。有關無綱要模式的更多資訊,請參閱 無綱要模式

  • 啟用此功能會將 rootnest_path 欄位新增至您的綱要。有關索引巢狀子文件的更多資訊,請參閱 索引巢狀文件

僅當您完全了解這些最上層綱要屬性如何影響您的搜尋應用程式行為時,才對這些屬性進行變更。剛開始時,您可以保留預設設定,並將注意力集中在綱要中的欄位和欄位類型上。

綱要欄位

按一下編輯器樹狀結構中的「欄位」節點,以查看您的綱要中欄位的概觀,以及控制 Solr 如何索引欄位的屬性

image

如果您的綱要中有很多欄位,您可以使用樹狀結構頂部的篩選器按類型或功能篩選顯示的欄位。例如,若要篩選已啟用 docValues 的欄位,請選擇 feature,然後選擇 docValues 並勾選 enabled

image

若要編輯欄位,請按一下樹狀結構中的欄位名稱,以將欄位資訊載入到樹狀結構右側的主要編輯器面板中。

image

在變更特定欄位的屬性之前,請考慮是否應變更欄位類型上的屬性,因為套用至欄位類型的變更將套用至使用該類型的所有欄位。

進行所需的變更後,請按一下「更新欄位」按鈕。綱要設計工具後端 API 將變更套用到綱要,然後根據需要將範例文件重新索引到臨時集合中。某些變更,例如將單值 docValues 欄位變更為多值,可能需要刪除底層 Lucene 索引並從頭開始重建。當您的變更需要完整重建時,綱要設計工具將會警告您。

image

此外,如果您根據範例資料將欄位變更為不相容的類型,設計工具將會自動復原變更。例如,設計工具將拒絕將具有文字資料的欄位變更為數值類型。

請小心變更已由具有索引資料的集合使用的綱要的欄位屬性。設計工具無法保護您免於對正在使用的綱要進行不相容的變更。通常,新增欄位和欄位類型對於現有綱要是安全的操作。變更欄位和/或欄位類型屬性可能會導致索引損壞。

綱要設計工具不支援從綱要中刪除欄位。

文字分析

當您在樹狀結構中選取基於文字的欄位時,「文字分析」面板會顯示如何分析範例文件中的文字以進行索引。

image

如果您需要變更欄位的文字分析策略,您需要編輯欄位類型。有關文字分析的更多資訊,請參閱 分析器

查詢測試器

查詢測試器」面板可讓您使用目前綱要,針對您的範例文件集執行查詢進行實驗。

使用查詢測試器,您可以查看對綱要的變更如何影響查詢的行為,例如比對、排序、分面和醒目提示。查詢測試器表單並非旨在示範 Solr 中可用的所有查詢功能。

image

每當您對綱要進行變更時,查詢測試器表單都會重新提交,以重新整理查詢結果。這有助於通知您關於比對問題,其中測試查詢應找到範例文件,但未傳回正確的結果,這表示欄位未正確索引,例如使用 string 而不是文字分析的欄位類型。

比對問題也可能表示欄位未複製到預設搜尋欄位中,例如全方位 _text_ 欄位。

查詢測試器表單列出「排序依據」下拉式選單中支援排序的所有欄位。如果您需要排序的欄位未列出,請確保它是單值的,並且已索引或已啟用 docValues。

同樣地,測試器表單會列出您可以計算分面的所有欄位;如果欄位未列在分面下拉式選單中,請確保它已索引或已啟用 docValues。

顯示變更

按一下「顯示變更」按鈕,以檢視在目前編輯階段期間對綱要進行的變更報告。未發佈的變更會與您複製的原始綱要(例如 _default)或已發佈的綱要進行比較。

image

如果存在使用綱要索引資料的集合,您在變更已發佈的綱要時需要小心。

發佈

發佈新綱要使其在建立新集合時可供使用。「發佈」對話方塊會顯示是否有任何現有集合會受到發佈動作的影響;當然,新綱要不會有任何受影響的集合。您也可以在發佈期間建立使用新綱要的新集合,並選擇是否在新集合中索引您的範例文件。

image

您也可以選擇防止綱要設計工具在未來變更此綱要。但是,此設定僅適用於綱要設計工具 UI,並不會阻止任何人直接使用綱要 API 來變更綱要。

發佈動作完成後,臨時配置集和集合會被刪除,而綱要設計工具 UI 會重設回全新狀態。

或者,除了發佈到 Zookeeper 之外,您也可以將包含綱要、solrconfig.xml 和支援檔案的配置集下載到 zip 檔案。可以使用 配置集 API 將 zip 檔案上傳到其他 Solr 執行個體,或儲存在版本控制中。