練習 3:索引您自己的資料
練習 3:索引您自己的資料
在這個練習中,使用您選擇的資料集。這可以是您本機硬碟上的檔案、您先前使用過的資料集,或您打算為生產應用程式索引至 Solr 的資料樣本。
此練習旨在讓您思考您需要為應用程式執行的操作
-
您需要索引哪些類型的資料?
-
您需要做什麼來準備 Solr 以處理您的資料(例如,建立特定欄位、設定複製欄位、決定分析規則等)
-
您想要為使用者提供哪些類型的搜尋選項?
-
您需要進行多少測試才能確保一切都按您預期的方式運作?
建立您自己的集合
在您開始之前,建立一個新的集合,名稱隨您喜好。在此範例中,集合將命名為「localDocs」;如果您想使用其他名稱,請將該名稱替換為您選擇的任何名稱。
$ bin/solr create -c localDocs -s 2 -rf 2
同樣地,如我們在上面的練習 2 中所見,這將使用 _default
設定集及其提供的所有無 Schema 功能。如我們先前所述,這可能會在我們索引資料時造成問題。您可能需要多次重複索引才能使 Schema 正確。
索引想法
Solr 有許多方法可以索引資料。選擇以下方法之一,並在您的系統中試試看
- 使用
bin/solr post
的本機檔案 -
如果您有本機檔案目錄,Post 工具 (
bin/solr post
) 可以索引檔案目錄。我們在第一個練習中看到了這個操作。在我們的練習中,我們僅使用了 JSON、XML 和 CSV,但 Post 工具也可以處理 HTML、PDF、Microsoft Office 格式(例如 MS Word)、純文字等等。
在此範例中,假設本機有一個名為「Documents」的目錄。若要索引它,我們將發出類似這樣的命令(在
-c
參數之後修正集合名稱,視需要而定)$ bin/solr post -c localDocs ~/Documents
當它處理您的文件時,您可能會收到錯誤。這些可能是由欄位猜測引起的,或可能不支援檔案類型。索引這類內容顯示了為您的資料規劃 Solr 的必要性,這需要了解它,或許還需要一些試驗和錯誤。
- SolrJ
-
SolrJ 是一個基於 Java 的用戶端,用於與 Solr 互動。針對基於 JVM 的語言或其他 用戶端 API 使用 SolrJ,以程式設計方式建立要傳送到 Solr 的文件。
- 文件畫面
-
使用管理 UI 文件畫面(位於 https://127.0.0.1:8983/solr/#/localDocs/documents),貼上要索引的文件,或從「文件類型」下拉式選單中選取
文件建立器
,以一次建立一個欄位的文件。按一下表單下方的 提交文件按鈕以索引您的文件。
更新資料
您可能會注意到,即使您在本教學課程中多次索引內容,也不會重複找到的結果。這是因為範例 Solr Schema(一個名為 managed-schema.xml
或 schema.xml
的檔案)指定了一個名為 id
的 uniqueKey
欄位。每當您將 POST 命令傳送到 Solr 以新增與現有文件具有相同 uniqueKey
值的的文件時,它會自動為您替換它。
您可以在 Solr 管理 UI 的核心特定「概觀」區段中查看 numDocs
和 maxDoc
的值,以了解已發生的情況。
numDocs
代表索引中可搜尋的文件數量(並且會大於 XML、JSON 或 CSV 文件的數量,因為有些檔案包含多個文件)。maxDoc
的值可能會更大,因為 maxDoc
計數包括邏輯上已刪除但尚未從索引中實際移除的文件。您可以重複發佈範例檔案多次,numDocs
永遠不會增加,因為新文件會不斷地取代舊文件。
請繼續編輯任何現有的範例資料檔案,更改一些資料,然後重新執行 PostTool (bin/solr post
)。您會在後續的搜尋中看到您的變更。
刪除資料
如果您需要多次迭代才能使您的 schema 正確,您可能需要刪除文件以清除集合並再次嘗試。但請注意,僅僅刪除文件並不會更改底層的欄位定義。基本上,這將允許您在根據您的需求變更欄位後重新索引資料。
您可以透過將刪除命令 POST 到更新 URL,並指定文件的唯一鍵欄位的值,或符合多個文件的查詢(請小心使用這個!)來刪除資料。如果我們正確構建請求,我們也可以使用 bin/solr post
來刪除文件。
執行以下命令來刪除特定文件
$ bin/solr post -c localDocs -d "<delete><id>SP2514N</id></delete>"
要刪除所有文件,您可以使用像這樣的「按查詢刪除」命令
$ bin/solr post -c localDocs -d "<delete><query>*:*</query></delete>"
您也可以修改上面的命令,僅刪除符合特定查詢的文件。