Sphinx實現復雜Sql查詢語句


Sphinx可以實現復雜的Sql語句,具體操作如下:

比如要實現的Sql語句為:select * from new_notes where ((status=100 &tmp_edit_status = 1) or status = 200 or status = 800 )  and title LIKE '%測試%' and tmptype = 1 and create_time > 1000 and create_time < 9999999 order by create_time limit 0,10 

1.首先設置匹配模式:Sphinx的匹配格式有哪些可參見https://www.cnblogs.com/yuanwanli/p/12768490.html

$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);

2.配置取值區間:

$sphinx->SetFilterRange('create_time',1000,'9999999');#可以設置多個

3.配置排序字段:

$sphinx->SetSortMode(SPH_SORT_EXTENDED,'create_time DESC');
#設置排序字段及排序方式,第一個參數是排序的模式,第二個參數為字段和排序方式DESC或ASC 注意:字段和排序方式需要空格隔開

4.設置limit:

$sphinx->SetLimits(0, 10, 1000);

5.設置查詢關鍵詞:最為關鍵的一步

$result = $sphinx -> query('((@status=100 & @tmp_edit_status=1) | @status=200  | @status=800 ) & @title(測試) & @tmptype = 1 ‘,"notes"); 
#語法 query('關鍵詞或語句','索引名稱')
#語句的語法:@字段名 判斷條件 
#模糊查詢:@字段名(關鍵詞) #多個判斷條件之間用 & 或 | 連接

 

完整代碼如下:

$sphinx = new SphinxClient();
$sphinx->SetServer("xxx.xxx.xx.xx",xxx);
$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$sphinx->SetFilterRange('create_time',1000,'9999999');
$sphinx->SetSortMode(SPH_SORT_EXTENDED,'create_time DESC');
$sphinx->SetLimits(0, 10, 1000);
$sphinx->SetArrayResult(true);
$result = $sphinx -> query('((@status=100 & @tmp_edit_status=1) | @status=200  | @status=800 ) & @title(測試) & @tmptype = 1 ‘,"notes"); 
echo "Query failed: " . $sphinx->GetLastError() . ".\n";
echo json_encode($result);

 

這樣就可以實現復雜Sql查詢語句了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM