Сфинкс возвращает противоречивые результаты при поиске через командную строку и использование php api - PullRequest
2 голосов
/ 26 марта 2011

Я делаю логический запрос, т.е. "hello | world". Когда я делаю этот запрос через командную строку, он дает правильные результаты, то есть документы, которые содержат оба эти термина, показаны вверху, а документы, содержащие только один из них, показаны внизу.

Однако, когда я делаю тот же запрос из php api sphinx, он дает неверные результаты. Я делаю запрос из командной строки, используя:

C: \ sphinx-1.10 \ bin \ search --config C: \ sphinx-1.10 \ sphinx.conf.in "hello | world" --limit 3

Это возвращает правильные результаты сейчас, я использую php-код:

<?php


include('/sphinx-1.10/api/sphinxapi.php');

  $cl = new SphinxClient();
  $cl->SetMatchMode(SPH_MATCH_BOOLEAN);
  $cl->SetSortMode(SPH_SORT_RELEVANCE);
  $cl->SetLimits(0,3);

  $result = $cl->Query( "hello | world", 'sample' );

  if ( $result === false ) {
      echo "Query failed: " . $cl->GetLastError() . "<br/>";
  }
  else {
      if ( $cl->GetLastWarning() ) {
          echo "WARNING: " . $cl->GetLastWarning() . "<br/>";
      }
      if ( ! empty($result["matches"]) ) {
          foreach ( $result["matches"] as $doc => $docinfo ) {
                echo "$doc <br/>";
          }
      }
  }
?>

Выше приведены неверные результаты.

Может кто-нибудь подсказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 05 сентября 2011

Вы пробовали вместо этого использовать режим сопоставления SPH_MATCH_EXTENDED2?Возможно, именно булевский режим наносит урон http://sphinxsearch.com/docs/current.html#boolean-syntax

...