充分利用 Apache Solr:搜索索引的技術探索

已發表: 2023-02-21

搜索功能通過允許用戶輕鬆快速地找到他們正在尋找的內容來增強網站的用戶體驗。 對於大型網站、電子商務網站和具有動態內容的網站(新聞網站、博客)更是如此。

Apache Solr 是各種規模的網站使用的最流行的搜索平台之一。 它是一個基於 Java 的開源搜索引擎,可讓您搜索大量數據,如文章、產品、客戶評論等。 在本文中深入了解 Apache Solr。

查看本文以了解如何在 Drupal 中配置 Apache Solr

阿帕奇解決方案

為什麼 Apache Solr 如此受歡迎?

Apache Solr 快速靈活,允許全文搜索、命中突出顯示(突出顯示匹配的搜索詞)、分面搜索(更精細的搜索)、實時索引(允許立即索引新內容)、動態集群(將搜索結果組織成組)、數據庫集成、NoSQL 功能(非關係數據庫)和豐富的文檔處理(索引各種文檔格式,如 PDF、MS Office、Open Office)。

關於 Apache Solr 的一些值得了解的事實:

  • 它最初由 CNET 網絡公司開發。 作為他們網站和文章的搜索引擎。 後來開源了,成為Apache的頂級項目。
  • 支持多種編程語言,如 PHP、Java、Python 和 Ruby。 它還為這些語言提供 API。
  • 具有對地理空間搜索的內置支持,允許根據其位置搜索內容。 特別適用於房地產網站、旅遊網站等網站。
  • 通過 API 和插件支持高級搜索功能,例如拼寫檢查、自動完成和自定義搜索。
  • 使用 Lucene 進行索引和搜索。

什麼是Lucene

Apache Lucene 是一個開源 Java 搜索庫,可讓您輕鬆地向應用程序添加搜索或信息檢索。 它用途廣泛、功能強大、準確,並且採用高效的搜索算法。

儘管 Lucene 以其全文搜索功能而聞名,但它也可用於文檔分類、數據分析和信息檢索。 它還支持英語以外的許多語言,如德語、法語、西班牙語、中文、日語等。

什麼是索引?

所有搜索引擎都以索引開始。 索引是將原始數據處理成高效的交叉引用查找以促進快速搜索。

搜索引擎不直接索引數據。 文本首先被分解為標記(原子元素)。 搜索是查詢搜索索引並檢索與查詢匹配的文檔的過程。

索引的優點

  • 快速準確的信息檢索(收集、解析和存儲)
  • 沒有索引,搜索引擎需要更多時間來掃描每個文檔

索引流程

索引流程

首先,文檔將被分析並拆分為標記。 所有這些標記都將被索引到倒排索引。 倒排索引是 Solr 建立索引的一種方式。

倒排索引的工作原理

假設我們有 3 個文檔:

  1. 我愛巧克力(D 1)
  2. 我點了巧克力蛋糕(D 2)
  3. 我準備了大香草蛋糕(D 3)

它的標記化方式如下表第 2 列所示。

代幣化

“巧克力”在 D1 和 D2 有售
“蛋糕”在 D2 和 D3 中可用
“大”在 D3 中可用
“訂購”在 D2 中可用
“準備”在 D3 中可用
“香草”在 D3 中可用

你會注意到像“我”、“愛”這樣的詞沒有被標記化。 這些稱為停用詞,Solr 不會對其編制索引或搜索。

因此,當有人搜索“巧克力蛋糕”一詞時,引擎會查看索引。 它不是查找文檔,而是首先查看索引以查看單詞“Chocolate”和“Cake”屬於哪些文檔。 這使得僅獲取特定文檔變得更加容易和快速。 這稱為倒排索引。

存儲架構

Apache Solr 使用基於文檔的存儲模式,並將每條數據存儲為集合中的單獨文檔。 這允許高效靈活地存儲和檢索數據。

在 Drupal 中,每個節點都被視為一個文檔。 因此,當您將節點索引到 Apache Solr 時,它被視為文檔。 每個文檔可以包含多個字段。 Lucene 沒有通用的全局模式。 這意味著您可以在 Apache Solr 中的每個文檔中索引任何類型的字段。

文檔-1

如何安裝 Apache Solr

  • 首先,確保您的系統上安裝了 Java。
  • 接下來,讓我們從這里安裝 Solr:https://solr.apache.org/downloads.html
  • 下載並解壓縮 Solr。
  • 在 Solr 文件夾上運行此命令。

◦ bin/solr -e 技術產品

這將創建一個用於演示的虛擬核心,它還將啟動 Solr 服務器。

  • 服務器啟動後,轉到瀏覽器並輸入“http://localhost:8983/”。
  • 確保使用虛擬核心成功安裝了 Solr。
解決方案

目錄結構

安裝 Solr 後,您將看到許多文件夾,例如:

Docs - 包含有關 Solr 的文檔
Dist - Solr 主 .jar 文件
Contrib - 包含附加插件和 Solr 的特殊功能
Bin - Solr 的腳本
示例- 包含演示 solr 功能
服務器- Solr 的核心。 包含 Solr web 應用程序、日誌、Solr 核心

配置文件

要創建核心,我們需要兩個強製文件。

  • 模式.xml
  • Solr配置文件

模式.xml

  • 它將包含您計劃支持的字段類型以及應如何分析這些類型。

Solr配置文件

  • 包含控制 Solr 核心行為的各種設置,如請求處理程序、請求調度程序、查詢組件、更新處理程序等。

在 Solr 中查詢

現在讓我們看看如何在 Solr 管理 UI 中查詢 Solr 結果。

查詢參數

  • 本地參數是 Solr 請求中特定於查詢參數的參數。

例如:貓:電子產品

查詢參數

帶操作的查詢參數

  • 我們可以通過操作查詢多個字段。

例如:cat: electronics id:TWINX2048-3200PRO with q.op AND
[或者]
cat: electronics 和 id:TWINX2048-3200PRO

查詢參數操作

[或者]

查詢參數操作或

篩選查詢

過濾器查詢有助於縮小搜索結果的範圍。 可以通過 fq 參數指定查詢以限制在超集中返回哪些文檔,而不影響分數。

過濾查詢

排序參數

sort 參數按升序 (asc) 或降序 (desc) 順序排列搜索結果。 根據內容,參數可以按數字或字母順序使用。

排序參數

行參數

rows 參數允許您對查詢結果進行分頁。

行參數

字段列表參數

fl 參數將查詢響應中包含的信息限制為指定的字段列表。

字段列表參數

默認字段參數

默認字段參數是查詢參數的默認字段。

默認字段參數

亮點參數

Solr 中的突出顯示功能可以包含與查詢匹配的文檔片段。

高亮參數

一些最常見的突出顯示參數是:

  • Hl.fl - 突出顯示字段列表。
  • Hl.simple.pre - 指定在突出顯示的單詞之前應使用哪個“標籤”。
  • Hl.simple.post - 指定在突出顯示的術語後應使用哪個“標籤”。
  • hl.highlightMultiTerm - 如果設置為true ,Solr 將突出顯示通配符查詢。 如果為false ,它們將不會被突出顯示。
高鐵

方面:

Facets 使用戶能夠探索和優化大量搜索結果。 它們在 UI 中顯示為複選框、下拉列表或其他控件。 控制方面的兩個一般參數是:

  1. 刻面參數

使用 facet 參數,用戶可以根據其搜索索引中一個或多個字段的值生成分面。 在搜索結果中,可以配置 facet 參數來控制 facet 的生成和顯示方式。

2. Facet.query參數

當用戶在他們的 Solr 查詢中包含 facet.query 參數時,Solr 將生成一個 facet 計數列表,該列表對應於索引中與每個查詢匹配的文檔數。 Facet.query 在您想要基於無法使用簡單字段值輕鬆表示的複雜搜索條件生成構面時非常有用。

還有其他幾個構面參數,如facet.field (指定應該用於生成構面的字段)facet.limit (每個字段顯示的最大構面數)facet.mincount (生成構面所需的最小文檔數)要包含在響應中的構面)facet.sort (指定構面值應顯示的順序)

刻面

刻面計數

最後的想法

Apache Solr 是一個高度通用的搜索引擎,具有許多有趣的功能,可以根據您的要求進行定制。 Drupal 與 Apache Solr 配合得非常好。 如果您正在尋找 Drupal 專家來為您的新項目配置一個強大的搜索引擎,我們很樂意為您提供幫助!