關(guān)于Solr搜索的概述

2018-11-21 14:21 更新

Solr 為搜索提供了豐富而靈活的功能。為了理解這種靈活性的程度,從對(duì) Solr 搜索所涉及的步驟和組件的概述開(kāi)始是很有幫助的。

當(dāng)用戶在 Solr 中運(yùn)行搜索時(shí),搜索查詢由一個(gè)請(qǐng)求處理程序處理。請(qǐng)求處理程序是一個(gè) Solr 插件,用于定義在 Solr 處理請(qǐng)求時(shí)要使用的邏輯。Solr 支持各種請(qǐng)求處理程序。有些是為處理搜索查詢而設(shè)計(jì)的,有些則是用來(lái)管理索引復(fù)制等任務(wù)的。

搜索應(yīng)用程序默認(rèn)選擇特定的請(qǐng)求處理程序。此外,還可以將應(yīng)用程序配置為允許用戶以不同的請(qǐng)求處理程序的首選項(xiàng)替代默認(rèn)選擇。

Solr 查詢解析器

為了處理搜索查詢,請(qǐng)求處理程序調(diào)用查詢解析器,該解析器解釋查詢的術(shù)語(yǔ)和參數(shù)。不同的查詢解析器支持不同的語(yǔ)法。Solr 默認(rèn)的查詢解析器被稱為標(biāo)準(zhǔn)查詢解析器,或者更常見(jiàn)的就是 “l(fā)ucene” 查詢解析器。Solr 還包括 DisMax 查詢解析器和擴(kuò)展的 DisMax(eDisMax)查詢解析器。標(biāo)準(zhǔn)查詢解析器的語(yǔ)法允許在搜索中更加精確,但是 DisMax 查詢解析器更能容忍錯(cuò)誤。DisMax 查詢解析器旨在提供類似于流行的搜索引擎(如 Google)的體驗(yàn),這些搜索引擎很少向用戶顯示語(yǔ)法錯(cuò)誤。擴(kuò)展的 DisMax 查詢解析器是 DisMax 的改進(jìn)版本,它處理完整的 Lucene 查詢語(yǔ)法,同時(shí)仍然容忍語(yǔ)法錯(cuò)誤。它還包括幾個(gè)附加功能。

另外,所有的查詢解析器都包含通用的查詢參數(shù)。

查詢解析器的輸入可以包括:

  • 搜索字符串——即在索引中搜索的術(shù)語(yǔ)。
  • 用于微調(diào)查詢的參數(shù),通過(guò)增加特定字符串或字段的重要性,通過(guò)在搜索項(xiàng)之間應(yīng)用布爾邏輯,或者通過(guò)從搜索結(jié)果中排除內(nèi)容。
  • 用于控制查詢響應(yīng)的表示的參數(shù),諸如指定將呈現(xiàn)結(jié)果的順序或者限制對(duì)搜索應(yīng)用的模式的特定字段的響應(yīng)。

搜索參數(shù)也可以指定一個(gè)過(guò)濾器查詢。作為搜索響應(yīng)的一部分,過(guò)濾器查詢針對(duì)整個(gè)索引運(yùn)行查詢并緩存結(jié)果。由于 Solr 為過(guò)濾器查詢分配了單獨(dú)的緩存,所以過(guò)濾器查詢的戰(zhàn)略使用可以提高搜索性能。(盡管名稱相似,但查詢過(guò)濾器與分析過(guò)濾器無(wú)關(guān)。過(guò)濾器查詢?cè)谒阉鲿r(shí)對(duì)索引中已有的數(shù)據(jù)執(zhí)行查詢,而分析過(guò)濾器(如Tokenizers)根據(jù)指定的規(guī)則解析用于索引的內(nèi)容。

搜索查詢可以請(qǐng)求在搜索響應(yīng)中突出顯示某些術(shù)語(yǔ);也就是說(shuō),選定的術(shù)語(yǔ)將顯示在彩色框中,以便在搜索結(jié)果的屏幕上“跳出”。突出顯示可以使搜索中返回的長(zhǎng)文檔中的相關(guān)段落更容易找到。Solr 支持多項(xiàng)高亮顯示。Solr 包含一組豐富的搜索參數(shù),用于控制如何突出顯示術(shù)語(yǔ)。

搜索響應(yīng)也可以配置為包含以突出顯示的文本為特色的片段(文檔摘錄)。流行的搜索引擎,如谷歌和 Yahoo ! 在搜索結(jié)果中返回代碼片段:3-4行文本,提供搜索結(jié)果的描述。

為幫助用戶找到所需的內(nèi)容,Solr 支持兩種特殊的搜索結(jié)果分組方式,以幫助進(jìn)一步探索:faceting 和集群。

faceting 是將搜索結(jié)果安排到不同的類別(基于索引項(xiàng))。在每個(gè)類別中,Solr 報(bào)告了相關(guān)術(shù)語(yǔ)的命中次數(shù),稱為 facet 約束。faceting 可讓用戶輕松瀏覽網(wǎng)站(如電影網(wǎng)站和產(chǎn)品評(píng)論網(wǎng)站)上的搜索結(jié)果,這些網(wǎng)站的分類和許多項(xiàng)目都屬于一個(gè)類別。

下面的屏幕截圖顯示了 CNET 網(wǎng)站(CBS Interactive Inc.)(這是第一個(gè)使用 Solr 的站點(diǎn))的一個(gè)示例。

Solr搜索

faceting 使用在索引搜索應(yīng)用程序時(shí)定義的字段。在上面的示例中,這些字段包括對(duì)描述數(shù)碼相機(jī)有用的信息類別:制造商、分辨率和縮放范圍。

集群組搜索結(jié)果是通過(guò)執(zhí)行搜索時(shí)發(fā)現(xiàn)的相似性而非搜索內(nèi)容時(shí)得到的。集群的結(jié)果往往缺乏在 faceting 搜索結(jié)果中找到的整齊的層次結(jié)構(gòu),但集群仍然是有用的。它可以揭示搜索結(jié)果之間意想不到的共同點(diǎn),它可以幫助用戶排除與他們真正搜索的內(nèi)容無(wú)關(guān)的內(nèi)容。

Solr 還支持名為 MoreLikeThis 的功能,該功能使用戶能夠提交新的查詢,這些查詢專注于在以前的查詢中返回的特定術(shù)語(yǔ)。MoreLikeThis 查詢可以利用 faceting 或集群來(lái)為用戶提供額外的幫助。

稱為響應(yīng)書(shū)寫(xiě)器(response writer)的 Solr 組件管理查詢響應(yīng)的最終呈現(xiàn)。Solr 包含各種響應(yīng)編寫(xiě)器,包括 XML 響應(yīng)編寫(xiě)器和 JSON 響應(yīng)編寫(xiě)器。

下圖總結(jié)了搜索過(guò)程的一些關(guān)鍵要素。

Solr搜索

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)