CoreSeek 是一款基于開源的 Sphinx 搜索服務的中文全文搜索引擎,高效穩(wěn)定。它適用于大型網站、論壇、電商等在線應用場景。本文主要介紹怎樣在 PHP 應用中使用 CoreSeek 實現(xiàn)高效的全文搜索。
首先,我們需要安裝和配置 CoreSeek。需要注意的是,CoreSeek 需要在 Sphinx 搜索服務的基礎上才能正常使用。安裝方法可以參考 CoreSeek 的官方文檔。在配置過程中,需要注意是將 Sphinx 的索引配置到 CoreSeek 中。
假設我們的應用中有一篇文章表,我們要對其中的標題、內容等進行全文搜索。我們需要在搜索引擎中創(chuàng)建相應的索引,然后進行搜索操作。
創(chuàng)建索引的代碼如下所示:
//創(chuàng)建索引 require_once('sphinxapi.php'); $cl = new SphinxClient(); $cl->SetServer('localhost', 9312); $cl->SetMatchMode(SPH_MATCH_EXTENDED2); $cl->SetArrayResult(true); $cl->SetLimits(0, 100); $index = 'article'; //索引名 $cl->UpdateAttributes($index, array('title'), array('lang_attribute'), array(SPH_ATTR_INTEGER)); $values = array( array("title" =>'test title', "content" =>'test content'), array("title" =>'another title', "content" =>'another content'), //其他文章 ); $cl->AddDocuments($values, $index); $result = $cl->RunQueries();以上代碼首先使用 SphinxAPI 類連接到 Sphinx 搜索服務,設置搜索的匹配模式、結果返回格式、結果的最大數量等參數。然后創(chuàng)建索引并添加文章到索引中,最后通過 SphinxClient::RunQueries() 方法得到搜索結果。 在搜索時,我們可以使用如下的代碼:
//搜索 $keyword = 'test'; $cl = new SphinxClient(); $cl->SetServer('localhost', 9312); $cl->SetMatchMode(SPH_MATCH_EXTENDED2); $cl->SetSortMode(SPH_SORT_RELEVANCE, ''); $index = array('article'); $results = $cl->Query($keyword, $index); //處理搜索結果 foreach ($results['matches'] as $match) { $id = $match['id']; $weight = $match['weight']; //獲取文章信息 $article = getArticleById($id); //處理搜索結果 //... }以上代碼首先創(chuàng)建 Sphinx Client 對象,設置相應的參數,然后使用 SphinxClient::Query() 方法進行搜索,并處理搜索結果,這里只是輸出了每篇文章的 ID 和權重。 值得注意的是,由于搜索結果中只返回每篇文章的 ID 和權重信息,我們需要根據 ID 去數據庫或其他數據源中獲取文章的詳細信息。 綜上所述,CoreSeek 是一款十分強大的全文搜索引擎,可以為我們的 PHP 應用帶來高效的搜索能力。在使用時,我們需要先安裝和配置 CoreSeek,并為需要搜索的數據創(chuàng)建索引。在搜索時,我們需要注意根據 ID 獲取詳細信息。