文檔說明

獲取搜索匹配數量

出于性能考慮,搜索結果的匹配數量均被設計為估算值,并非準確值。

1. 索引庫內的數據總數

這個數量是真實準確的,并非估算,獲取總量有以下兩種做法,至于喜歡用哪種您自己決定。

$total = $search->dbTotal;
$total = $search->getDbTotal();
2. 最近一次搜索的匹配數

通過 XSSearch::getLastCountXSSearch::lastCount 可以快速獲取到最近一次調用 XSSearch::search 進行搜索時得到的匹配數量。

除非您對搜索結果完全不關心,否則強烈建議用這種方法獲取匹配數目以減少系統開銷。

// 假設曾經有一次 search 調用
$docs = $search->setQuery('測試')->setLimit(5)->search();
 
// 必須在 search() 之后調用
$count = $search->lastCount;
$count = $search->getLastCount();
3. 直接獲取搜索匹配數

通過 XSSearch::count 調用可以直接獲取搜索的匹配數量,該方法和 XSSearch::search 類似,在調用前可以做一系列的搜索查詢語句構建,也可以直接接受查詢語句做參數。

返回值是一個整型數字,是估算值。

// 先設置 Query 再獲取數量
$count = $search->setQuery('神雕俠侶 -電視劇')->count();
 
// 直接把 Query 語句傳入
$count = $search->count('杭州 西湖');

Tip: 對于不帶參數的 count 調用建議放在 search 之后,內部會進行優化,減少一次查詢。

$Id$

2條評論!

#58 報告
2114878043 at 2015-07-14 15:37:07
count中條件增多,結果就不對

$search->count('title':'鳥人'); 一個條件的時候結果還是對的, 再增加一個條件就不對了 $search->count('type':2 AND 'title':'鳥人'); 跟數據庫查詢的結果相比,就不對了。

這是為什么

#41 報告
fain7 at 2014-06-13 17:53:01
得到count的數字不對。

基于我的數據庫,我搜索“OL”并顯示10個記錄,顯示匹配結果數目有526條。

當我搜索“OL”并顯示10個記錄,跳過18個記錄的時候,顯示匹配結果數目還是526條。

關鍵是我搜索“OL”并顯示10個記錄,跳過19個記錄的時候,顯示匹配結果數目變成了28條。

我繼續跳過19條,20條,直到27條,顯示匹配結果數目依舊28條。而且數據顯示到28條,之后的就不顯示了。

請到論壇 登錄 后刷新本頁面!

青海快三开奖走势图_