1. 程式人生 > 其它 >sphinx(七)sphinx匹配模式

sphinx(七)sphinx匹配模式

技術標籤: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

歡迎訪問小程式:
在這裡插入圖片描述