sphinx(七)sphinx匹配模式
阿新 • • 發佈:2020-12-13
技術標籤:sphinx全文搜尋mysqlmysqlsphinx全文檢索
Sphinx匹配模式
語法: $sp -> SetMatchMode(常量)
SPH_MATCH_ALL 匹配所有詞(預設)
SPH_MATCH_ANY 匹配一個詞
SPH_MATCH_PHRASE 匹配整一個詞
SPH_MATCH_BOOLEAN 將查詢看作一個布林表示式
SPH_MATCH_EXTENDED 查詢看做一個sphinx的表示式
舉例: 我喜歡PHP
分詞: 我 喜歡 PHP
準備工作: 先停止服務-> 建立索引->啟動服務
1:匹配所有詞(SPH_MATCH_ALL)
說明:我 喜歡 PHP 欄位都要存在, 位置不限
<?php
#步驟1:引入sphinx介面檔案
require './sphinxapi.php';
#步驟2:例項化物件
$sp = new SphinxClient;
#步驟3:設定服務
$sp->SetServer('localhost', 9312);
#步驟4:設定匹配模式
$sp->SetMatchMode(SPH_MATCH_ALL);
#步驟5:設定查詢條數
$sp->SetLimits(0, 5000);
#步驟6:傳送查詢
$rs = $sp->query( '我喜歡PHP', 'music');
echo '<pre>';
print_r($rs); #
2:匹配一個詞(SPH_MATCH_ANY)
說明: 我 喜歡 PHP 只要有一個存在,就匹配
#步驟4:設定匹配模式
$sp->SetMatchMode(SPH_MATCH_ANY);
3:匹配整個詞(SPH_MATCH_PHRASE)
說明: 我 喜歡 PHP 都必須存在 位置必須一致
#步驟4:設定匹配模式
$sp->SetMatchMode(SPH_MATCH_PHRASE);
4:將查詢看作一個布林表示式(SPH_MATCH_BOOLEAN)
#步驟4:設定匹配模式
$sp->SetMatchMode(SPH_MATCH_BOOLEAN);
5:查詢看做一個sphinx的表示式(SPH_MATCH_EXTENDED)
說明: 查詢指定欄位的內容 @欄位 內容
舉例: @title 內容 @content 內容 @author 內容
#步驟4:設定匹配模式
$sp->SetMatchMode(SPH_MATCH_EXTENDED);
#步驟5:設定查詢條數
$sp->SetLimits(0, 5000);
#步驟6:傳送查詢
$rs = $sp->query('@content PHP @author 校長'); #內容=PHP並作者=校長
echo '<pre>';
print_r($rs); #
這裡需要注意一下:
官方的sphinxapi.php中設定查詢模式的程式碼如下所示:
/// set matching mode
function SetMatchMode ( $mode )
{
// trigger_error 應該註釋,否則訪問即報錯
trigger_error ( 'DEPRECATED: Do not call this method or, even better, use SphinxQL instead of an API', E_USER_DEPRECATED );
assert ( $mode==SPH_MATCH_ALL
|| $mode==SPH_MATCH_ANY
|| $mode==SPH_MATCH_PHRASE
|| $mode==SPH_MATCH_BOOLEAN
|| $mode==SPH_MATCH_EXTENDED
|| $mode==SPH_MATCH_FULLSCAN
|| $mode==SPH_MATCH_EXTENDED2 );
$this->_mode = $mode;
}
我們需要將trigger_error這行程式碼註釋。否則訪問就報錯。
有好的建議,請在下方輸入你的評論。
歡迎訪問個人部落格
https://guanchao.site
歡迎訪問小程式: