Как это сделать с помощью Sphinx (ограничить количество результатов поиска) - PullRequest
0 голосов
/ 20 августа 2011

Я новичок в сфинксе, и мне нужна помощь. Я запрашиваю сервер Sphinx с помощью PHP-скрипта вроде:

 $cl = new SphinxClient();
 $cl->SetServer( "host", 9312 );
 $cl->SetMatchMode( SPH_MATCH_ANY  );
 $result = $cl->Query( "some word",  "index1" );  

Теперь я хотел бы знать, как получить для ТОГО ЖЕ САМОГО запроса сначала 20 результатов, затем следующие 20 результатов и т. Д., Как в MySQL LIMIT 0,20, затем LIMIT 20,20 и т. Д.?

Ответы [ 4 ]

1 голос
/ 20 января 2015
1 голос
/ 20 января 2015
1 голос
/ 21 августа 2011
$offset = 0;
if (isset($_GET['offset'])) {
    $offset = $_GET['offset'];
}
$limit = 30;
$max_matches = 1000;
$cl = new SphinxClient();

$cl->SetLimits((int)$offset,
    // limit for this "page", starting at $offset
    (int)$limit,
    // absolute limit for number of results
    ((int)$limit > $max_matches)
        ? (int)$limit
        : (int)$max_matches);

Где $offset - текущая начальная запись (по умолчанию 0), $limit - количество записей, отображаемых на странице, и $max_matches - максимальное количество совпадений, которое вы хотите разрешить вернуть в одной записи.поиск.

0 голосов
/ 27 августа 2011

Первый раз

$cl->SetLimits(0,20);

, затем

$cl->SetLimits(20,20);
...