Solr文檔、字段和模式設(shè)計(jì)概述

2018-11-09 17:44 更新

Solr 的基本前提很簡單。您給它很多的信息,然后你可以問它的問題,找到你想要的信息。您在所有信息中提供的內(nèi)容稱為索引或更新。當(dāng)你問一個(gè)問題時(shí),它被稱為查詢。

了解 Solr 工作原理的一種方法是將其想成一本 loose-leaf 的食譜。每次向書中添加食譜時(shí),您都會(huì)在后面更新索引。您列出了您剛才添加的食譜的每個(gè)成分和頁碼。假設(shè)您添加100食譜。使用索引,你可以很快找到所有的食譜,使用嘴豆類,或朝鮮薊,或咖啡,作為一種成分。使用索引要比每個(gè)食譜一個(gè)一個(gè)的快速。想象一本書的1000食譜,或100萬。

Solr 允許你建立一個(gè)包含許多不同字段或條目類型的索引。上面的例子展示了如何用一個(gè)字段來構(gòu)建索引:ingredients。你可以在為配方的烹飪風(fēng)格指數(shù)等多個(gè)領(lǐng)域,像 Asian,Cajun 或者 vegan,你可以有一個(gè)索引字段的準(zhǔn)備時(shí)間。Solr 可以回答這樣的問題,比如:“在不到30分鐘的時(shí)間內(nèi),可以準(zhǔn)備哪些以血橙為原料的 Cajun 式食譜?

模式是您告訴 Solr 如何從輸入文檔建立索引的地方。

Solr 如何看待文檔

Solr 的基本信息單元是一個(gè)文檔,它是描述某些東西的一組數(shù)據(jù)。例如:配方文件將包含成分、說明、準(zhǔn)備時(shí)間、烹飪時(shí)間、所需的工具等等。例如,關(guān)于一個(gè)人的文檔可能包含該人的姓名、傳記、最喜歡的顏色和鞋子大小。關(guān)于一本書的文檔可能包含標(biāo)題、作者、出版年份、頁數(shù)等等。

在 Solr 宇宙中,文檔由字段組成,這些字段是更具體的信息片段。我們比喻的鞋子的大小可能是一個(gè)領(lǐng)域,名字和姓氏可以是字段。

字段可以包含不同類型的數(shù)據(jù)。例如,名稱字段是文本(字符數(shù)據(jù))。鞋號(hào)字段可能是一個(gè)浮點(diǎn)數(shù),以便它可以包含像 6 和 9.5 這樣的值。顯然,字段的定義是非常靈活的(例如,您可以將鞋號(hào)字段定義為文本字段而不是浮點(diǎn)數(shù)),但是如果您正確定義字段,Solr 將能夠正確解釋它們,并且您的用戶在執(zhí)行查詢時(shí)會(huì)得到更好的結(jié)果。

您可以通過指定字段類型來告訴 Solr 字段包含的數(shù)據(jù)類型。字段類型告訴 Solr 如何解釋字段以及如何查詢。

當(dāng)您添加一個(gè)文檔時(shí),Solr 將獲取文檔字段中的信息并將該信息添加到索引中。當(dāng)您執(zhí)行查詢時(shí),Solr 可以快速查閱索引并返回匹配的文檔。

字段分析

字段分析告訴 Solr 在生成索引時(shí)如何處理傳入的數(shù)據(jù)。這個(gè)過程的一個(gè)更準(zhǔn)確的名字是處理(processing),甚至消化(digestion),但官方名稱是分析。

例如,考慮個(gè)人文檔中的傳記字段。每一個(gè)傳記的單詞都必須編入索引,以便快速找到與番茄醬,蜻蜓或密碼學(xué)有關(guān)的人。

然而,一本傳記可能會(huì)包含很多你不關(guān)心的詞,也不希望堵塞你的索引詞,比如 “the”、“a”、“to” 等等。此外,假設(shè)傳記中包含“番茄醬”一詞,在句首是大寫的。如果用戶對 “番茄醬” 進(jìn)行查詢,即使傳記包含大寫的單詞,您也希望 Solr 告訴你有關(guān)此人的信息。

這兩個(gè)問題的解決方案是現(xiàn)場分析。對于傳記字段,你可以告訴 Solr 如何將傳記分解成文字。您可以告訴 Solr 你想讓所有的單詞小寫,你可以告訴 Solr 刪除重音符號(hào)。

字段分析是字段類型的重要組成部分。了解分析器、標(biāo)記器和過濾器是對字段分析的詳細(xì)描述。

Solr 的模式文件

Solr 存儲(chǔ)有關(guān)模式文件中需要理解的字段類型和字段的詳細(xì)信息。此文件的名稱和位置可能會(huì)有所不同,具體取決于您最初如何配置 Solr 或稍后對其進(jìn)行的修改。

  • managed-schema 是 Solr 默認(rèn)使用的模式文件的名稱,用于支持通過 Schema API 或 Schemaless Mode 功能在運(yùn)行時(shí)進(jìn)行模式更改。如果您選擇了,您可以 顯式配置 managed-schema 功能以使用備用文件名,但文件內(nèi)容仍由 Solr 自動(dòng)更新。
  • schema.xml 是模式文件的傳統(tǒng)名稱,可以由使用 ClassicIndexSchemaFactory 的用戶手動(dòng)編輯該模式。
  • 如果您使用的是 SolrCloud,則您可能無法通過本地文件系統(tǒng)上的這些名稱找到任何文件。您將只能通過 Schema API(如果已啟用)或通過 Solr 管理界面的Cloud Screens 來查看模式。

無論您的安裝中使用的文件的名稱是什么,文件的結(jié)構(gòu)都不會(huì)改變。但是,與文件交互的方式將會(huì)改變。如果您正在使用托管模式,則只能使用 Schema API 與文件進(jìn)行交互,而不要進(jìn)行手動(dòng)編輯。如果您不使用托管模式,則只能對該文件進(jìn)行手動(dòng)編輯,而 Schema API 將不支持任何修改。

請注意,如果您沒有使用 Schema API,但使用了 SolrCloud,則需要與 schema.xml 進(jìn)行交互,通過 ZooKeeper 使用 upconfig 和 downconfig 命令來創(chuàng)建一個(gè)本地副本并上傳您的更改?!?nbsp;Solr 控制腳本參考”和 “使用 ZooKeeper 管理配置文件”中介紹了執(zhí)行此操作的選項(xiàng)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)