2013-12-22 77 views
0

使用獅身人面像標準的MySQL使用查詢分頁與獅身人面像

$sql = "SELECT *,WEIGHT() AS score FROM tableindex WHERE  {$matchagainst} ORDER BY score LIMIT {$page},100 OPTION ranker=bm25,index_weights=(name=10, keywords=3) "; 

我想分頁的結果。使用典型的MySQL結果集將只有100行給定此查詢,但Sphinx不認爲$頁作爲抵消。相反,如果$ page等於10,那麼Sphinx在計數中也會包含1000個結果,即使它實際上返回了100行。

這是一個錯誤還是他們在Sphinx中對結果進行分頁的一些其他方式,只返回行計數和$ page偏移量後面的行?

回答

0

SHOW META中的總數和total_found始終計數所有行而不包括關於偏移量和限制。

如果您正在獲取100行數據,那麼一切正常,因爲它應該。

有點像從SQL的SQL_CALC_FOUND_ROWS

+0

謝謝你的迴應。我已閱讀了Sphinx網站上的許多文章,並且是一位粉絲。鑑於上述示例,只會返回預期的100個結果,但max_matches會計算結果集中的100個結果和結果集之前的1000個結果。在配置文件中,我將max_matches設置爲相當高的值,甚至在查詢中設置得相對較高。 max_matches不應該等於行限制而不是偏移+限制嗎?我使用Sphinx進行產品分頁,並且根據查詢,可能會有很大數目。 – RobNHood