目錄
解決方法1:" >解決方法1:
首頁 後端開發 php教程 搜尋方案 solr+php如何安裝配置?

搜尋方案 solr+php如何安裝配置?

Mar 24, 2017 pm 01:25 PM
php solr

問題

solr+php如何安裝設定使用

解決方法1:

solr提供http請求查詢介面。客戶端透過觸發http請求獲取json、xml等數據格式數據,並對數據進行解析顯示。一般情況下各種語言都會有封裝好的客戶端插件,如java的solrj、python的solrpy,php的php-solr-client,根據提供的api進行索引和查詢。至於solr的安裝配置可以去看看solr cookbook 這本書.

解決方法2:

要讓php程式用上solr java怎麼辦? 搜素系統的索引怎麼建立?
php怎麼寫程式碼?

solr是java寫的,是一個伺服器程序,有一個管理介面,提供http介面
除了設定檔不用寫java程式碼、php有solr的擴充

所以,還算簡單


1,安裝solr和驗證你安裝上了

參考CentOS下安裝Solr5.3
solr5.3已經是單獨的伺服器,包括web管理後台,所以挺好的只需要保證你的linux 有jdk直接下載solr5.3的包, Apache Download Mirrors
一定要下載solr5.3.tgz 這樣的,不要下src的包,然後解壓縮得到類似solr5.3這樣的目錄

安裝最關鍵的兩點1 不是解壓縮就能用solr目錄下有個install腳本要運行,並且要指定data目錄(要儲存索引)2 solr 有一個core的概念,理解成資料庫裡的db吧,可以建立一個core,這個也有腳本,但一定保證data目錄是solr用戶的權限

# solr-5.3.0/bin/install_solr_service.sh solr-5.3.0.tgz -d /data/solr -i /usr/local

-i表示你把solr伺服器放在哪

# - solr -c "/usr/local/solr/solr/bin/solr create -c corename

創建一個你自己的core

service solr start 啟動服務


http://你的ip::8983/solr 這個是管理介面

2,設計自己的搜尋索引

http://你的ip::8983/solr 這個是管理介面,選擇你建立的core

只專注於add Documents 和query 即可,一個事加索引一個事查詢,特別容易理解add Documents介面,已經有例子,索引了兩個欄位id和title ,你改下資料提交
Query 介面 q=*:* 查詢所有
q=title:a* 查詢title為a開頭的

簡單玩幾次很容易明白

現在有id,title 我想添加一個自己的字段,type怎麼辦? :

參考下填入上type即可

service solr stop/start 重啟服務
回到管理介面,加入數據,假設你要聯合搜尋title和type
那麼q=  title:xx         fq= type:xx, 多加一個fq明白了吧

3,寫一個php程式
q明白了吧

3,寫一個php程式研究,基本上可以做到建立數據,查出數據現在就寫一個php程式完成這些功能參考:PHP: Solr - Manual
SolrInputDocument   輸入文檔
SolrClient  這個是用戶連接solr伺服器
SolrQuery  SolrClient  這個是用戶連接solr伺服器
SolrQuery  這個是構建這個是構建這個是直接構建條件上程式好了:

class  Search
{
	private $client;
	public function __construct() {
            $options = 
            [
                'hostname' => 'localhost',   //solr服务器的ip
                'path' => 'solr/corename',  //这个解决core的问题,corename就是你的core
                'wt' => 'json',
            ];
$this->client = new \SolrClient($options); 
	}
public function addIndex($id, $type, $content) {//加索引的函数
            $doc = new \SolrInputDocument();
$doc->addField('id', $type . "." . $id); //保证id唯一我把type加上了
            $doc->addField('type', $type);
            $doc->addField('title', $content);
            $client = $this->client;
$updateResponse = $client->addDocument($doc);
            $client->commit();  //一定要commit才能立即生效
$ret = ($updateResponse->getResponse());
            if ( isset($ret->responseHeader['status']) ) {
                return $ret->responseHeader['status'] == 0?true:false;
            }
             return false;
        }
public function search($key, $type=0, $page=0, $limit=15) {
            $query = new \SolrQuery();
$query->setQuery('title:' . $key . "*"); //这个是设置keyword
	    $query->setStart($page); //分页的
            $query->setRows($limit);
            if($type) {
                $query->addFilterQuery('type:' . $type);  //用到fq了
            }
            $query->addField('id')->addField('title')->addField('type'); //这里是你要查哪些字段
            $client = $this->client;
            $query_response = $client->query($query);
$response = $query_response->getResponse();
            $response = ($response->response);
            if ( is_array($response->docs) ) {
                foreach($response->docs as &$doc) {
                    $id = explode(".", $doc->id);
                    if( isset($id[1]) ) {
                    $doc->id = $id[1];
                    }
                    $doc->type = isset($doc->type[0])?$doc->type[0]:'';
                }
            }
            return ($response);
        }
}
登入後複製

相關文章:

php的solr的操作類別及demo

安裝php-solr擴充

集成PHP 應用和Sol 搜尋引擎
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

See all articles