首頁 > 後端開發 > php教程 > 搜尋方案 solr+php如何安裝配置?

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

PHP中文网
發布: 2023-03-01 07:44:01
原創
1694 人瀏覽過

問題

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 搜尋引擎
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板