(PECL sphinx >= 0.1.0)

SphinxClient::setLimitsУстановка смещения и предельного числа значений для набора результатов


public SphinxClient::setLimits ( int $offset , int $limit [, int $max_matches = 0 [, int $cutoff = 0 ]] ) : bool

Устанавливает смещение offset для получаемого от сервера набора результатов, и количество записей limit, которое необходимо получить с данным смещением. Дополнительно может контролировать максимальное число результатов для данного запроса max_matches и пороговое количество совпадений cutoff, после превышения которого можно прекратить поиск.

Список параметров


Смещение набора результатов.


Количество необходимых к получению результатов.


Контролирует количество совпадений, которые searchd будет хранить в оперативной памяти в процессе поиска.


Используется для повышенного контроля за производительностью. Параметр указывает searchd принудительно останавливать поиск, как только было найдено и обработано cutoff совпадений.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

add a note add a note

User Contributed Notes 4 notes

xxxbunker dot com
10 years ago
the max_matches / cutoff parameters are priceless.

if you ever have a situation where you need a 'count' of the number of matches, but only need to display lets say the 'top 10', these 2 parameters are very handy.

we used to get the occasional 'unable to connect' error with sphinx, after implementing these 2 parameters where applicable, these issues disappeared, load dropped, and the servers were much happier.
vlk dot abakan at gmail dot com
4 years ago
If you use shpinxQL, you can add "max_matches" option to your query:

... LIMIT 1000, 10 OPTION max_matches = 1000

And to "searchd" section in sphinx.conf:


max_matches = 10000

shoanm at users dot sourceforge dot net
10 years ago
I almost pulled out all my hair trying to figure this one out. After applying limits using


the search kept returning only false. getLastError() and getLastWarning() contained empty strings.

The solution, like Nayana stated, is to add a positive non-zero integer $max to setLimit.
Nayana Hettiarachch nayana at corp-gems dot com
11 years ago
If you get an error
per-query max_matches=0 out of bounds (per-server max_matches=1000).

make sure that you also set the $max to a value other than the default 0,

there is an issue published with a patch if you feel like wanting to patch,

the first option works well as a workaround.

To Top