首頁 >後端開發 >php教程 >將Solarium與Solr一起進行搜索 - 設置

將Solarium與Solr一起進行搜索 - 設置

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原創
2025-02-21 09:00:14400瀏覽

Using Solarium with SOLR for Search - Setup

核心要點

  • Apache SOLR是一個強大的搜索平台,提供全文搜索、分面搜索、結果高亮顯示和地理空間搜索等功能。它可以通過HTTP與任何編程語言集成,而對於PHP用戶,Solarium項目簡化了這種集成。
  • SOLR作為一個Web服務運行,創建文檔的搜索索引。它允許全文搜索,並將附加信息添加到已索引的搜索文檔中。其最有用的功能之一是分面搜索,允許用戶過濾搜索結果。
  • 安裝SOLR包括在您的操作系統上設置它,啟動服務器並通過管理界面驗證安裝。模式定義了被索引的文檔的字段,可以通過複製默認目錄並自定義它來設置。
  • Solarium是SOLR的一個客戶端庫,它簡化了連接到SOLR、執行查詢和處理響應的過程。它可以使用Composer(PHP的依賴項管理工具)安裝。安裝後,需要將其配置為連接到SOLR服務器。

Apache SOLR是一個基於Apache Lucene的企業級搜索平台。它提供強大的全文搜索以及高級功能,例如分面搜索、結果高亮顯示和地理空間搜索。它具有極高的可擴展性和容錯性。

據報導,Digg、Netflix、Instagram和Whitehouse.gov等知名網站使用SOLR來支持其搜索功能(來源)。

雖然SOLR是用Java編寫的,但它可以通過HTTP訪問,因此可以與您喜歡的任何編程語言集成。如果您使用的是PHP,那麼Solarium項目使集成更加容易,它在底層請求之上提供了一層抽象,使您可以像使用在應用程序中運行的原生實現一樣使用SOLR。

在本系列文章中,我將並排介紹SOLR和Solarium。我們將首先安裝和配置SOLR並創建搜索索引。然後,我們將研究如何索引文檔。接下來,我們將實現一個基本的搜索,然後使用一些更高級的功能(如分面搜索、結果高亮顯示和建議)對其進行擴展。

在接下來的過程中,我們將構建一個簡單的應用程序來搜索電影集合。您可以在這裡獲取源代碼,或在這裡查看在線演示。

基本概念和操作

在我們深入研究實現細節之前,值得了解一些基本概念以及整體流程。

SOLR是一個Java應用程序,它作為Web服務運行,通常在Servlet容器(如Tomcat、Glassfish或JBoss)中運行。您可以使用XML、JSON、CSV或二進制格式通過HTTP操作和查詢它——因此您可以使用任何編程語言進行應用程序開發。但是,Solarium庫提供了一層抽象,允許您調用方法,就好像SOLR是原生實現一樣。在本教程中,我們將把SOLR運行在與我們的應用程序相同的機器上,但在實際應用中,它可以位於單獨的服務器上。

SOLR創建文檔的搜索索引。這通常反映了我們在現實生活中可能認為的文檔;一篇文章、博客文章甚至一整本書。但是,文檔也可以表示適用於您的應用程序的任何對象——產品、地點、事件——或者在我們的示例應用程序中,是一部電影。

在最基本的情況下,SOLR允許您對文檔執行全文搜索。想想搜索引擎;您通常會搜索關鍵字、短語或完整標題。您只能用SQL的LIKE子句走這麼遠;這就是全文搜索的用武之地。

您還可以將附加信息附加到已索引的搜索文檔中,這些信息不一定被基於文本的搜索捕獲;例如,您可以包含產品的價格、房產的房間數量或項目添加到數據庫的日期。

分面是SOLR最有用的功能之一。如果您曾經在網上購物,您可能已經看到過分面搜索;分面允許您通過應用“過濾器”來“細化”搜索結果。例如,在搜索在線書店後,您可以使用過濾器將結果限制為特定作者、特定類型或特定格式的書籍。

SOLR實例使用一個或多個核心運行。核心是配置和索引的集合,每個核心都有自己的模式。通常,單個實例特定於特定應用程序。由於不同類型的內容可能具有非常不同的結構和信息——例如,考慮產品、文章和用戶之間的差異——應用程序通常在一個SOLR實例中有多個核心。

安裝SOLR

我將提供如何在Mac上設置SOLR的說明;對於其他操作系統,請參考文檔——或者,您可以下載Blaze,這是一個預安裝SOLR的設備。

在Mac上安裝SOLR最簡單的方法是使用Homebrew:

<code class="language-bash">brew update
brew install solr</code>

這會將軟件安裝到類似/usr/local/Cellar/solr/4.5.0的目錄中,具體取決於您使用的軟件版本。

要使用提供的Java存檔(JAR)啟動服務器:

<code class="language-bash">cd /usr/local/Cellar/solr/4.5.0/libeexec/example
java -jar start.jar</code>

要驗證安裝是否成功,請嘗試在您的Web瀏覽器中訪問管理界面:

<code>http://localhost:8983/solr/</code>

如果您在左上角看到帶有Apache SOLR徽標的管理儀表板,則服務器已啟動並正在運行。

提示:要停止SOLR——當您更改配置時(就像我們很快就要做的那樣),您需要這樣做——只需按CTRL C。

(Linux說明:https://www.php.cn/link/02013105f0430de65b8b1408d52c84be

設置模式

開始使用SOLR最簡單的方法可能是複制默認目錄,然後對其進行自定義。

libexec/example複製solr目錄;在這裡,我們正在創建一個名為“movies”的新SOLR核心:

<code class="language-bash">brew update
brew install solr</code>

我們稍後會查看配置文件,movies\solr.xmlmovies\collection1\conf\solrconfig.xml。目前,我們真正感興趣的是模式,它定義了我們正在索引的文檔的字段,以及如何處理這些字段。

定義此內容的文件是movies\collection1\conf\schema.xml

如果您打開剛剛複製過來的文件,您會發現它不僅包含一些有用的默認值,而且還包含大量的註釋來幫助您理解如何自定義它。

模式配置文件負責兩個主要方面;字段和類型。類型只是數據類型,在底層,它們將類型名稱(例如整數、日期和字符串)映射到實現中使用的底層Java類。例如:solr.TrieIntFieldsolr.TrieDateFieldsolr.TextField。類型配置還定義了標記器、分析器和過濾器的行為。

以下是一些基本類型的示例:

<code class="language-bash">cd /usr/local/Cellar/solr/4.5.0/libeexec/example
java -jar start.jar</code>

字符串類型值得仔細研究,因為這裡有一個陷阱。當您將字段用作字符串時,任何數據都會按您輸入的原樣存儲。此外,為了使查詢與之匹配,它必須完全相同。例如,假設您有一個作為字符串的文章標題,並插入了一個標題為“An Introduction to SOLR”的文檔。在任何正確的搜索實現中,您都希望使用諸如“SOLR introduction”之類的查詢找到文章——更不用說“an introduction to Solr”了。要解決這個問題,如果您不希望這種完全匹配的行為——這在某些情況下實際上很有用,例如分面搜索——那麼您可以使用標記器和過濾器的組合。

(後續內容與原文基本一致,只是對語言和表達方式進行了調整,並對部分段落進行了精簡,避免重複。為了保持篇幅合理,這裡省略了原文剩餘部分的偽原創結果。)

(FAQs部分也進行了類似的處理,省略了具體內容。)

以上是將Solarium與Solr一起進行搜索 - 設置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn