關於使用coreseek並為其做分頁的介紹(轉)

來源:互聯網
上載者:User

標籤:

coreseek 做分頁時找資料總量還真不好找。以為他會給一個方法(函數)什麼的去擷取,結果卻不是。
首先需要瞭解:
num_matches:
 當前返回的結果數,<= limit設定值。
max_matches: 最多返回的結果數,預設為1000,使用者最多隻能看到1000條搜尋結果。這個是在nf中設定的。
total_found: 結果總數。索引中所有滿足查詢條件的文檔總數。這個是在你查詢的返回結果中的數組中有的。當然前提是你必須在query前設定:$this->sc->SetArrayResult(true);
total: 最多返回結果數,取值取決於max_matches值和total_found值。如果total_found數超過max_matches,則total = max_matches,否則,total = total_found。這個也是在你查詢的返回結果中的數組中有的。當然前提也是你必須在query前設定:$this->sc->SetArrayResult(true);
這樣,瞭解了這幾個屬性之後就可以做分頁了。

我們應該使用傳回值中的total來做分頁總資料。雖然這個不代表真實的傳回值(當傳回值大於max_matches,也就是1000,如真實返回2500,但是你卻只能得到1000)。
代碼是:

  複製代碼 代碼如下:

  $this->sc->SetServer("127.0.0.1",9312);
  $this->sc->SetArrayResult(true);
  $this->sc->SetLimits($start,$page);
//如果需要搜尋指定全文欄位的內容,可以使用擴充匹配模式:
  $this->sc->SetMatchMode(SPH_MATCH_ANY); 
$res = $this->sc->Query($where,"main");
$count = $res[‘total‘];


這個¥count就是我們要的分頁的總資料了。
其他的後續怎麼分頁是以樣式和資料結構做的,不能雷同,並且分頁也是基礎的東西,所以這裡就不再多說分頁的詳細問題了。我這裡單單討論這個總資料的取值情況。因為很多人都取count($res[‘matches‘])的值,但是這個是分頁後的返回結果,你只能得到10,或者20或者其他的值。呵呵,那就搞笑了。

關於使用coreseek並為其做分頁的介紹(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.