当通过命令行和使用php api搜索时,Sphinx返回不一致的结果

时间:2011-03-26 19:45:50

标签: php sphinx

我正在制作一个布尔查询,即"hello | world"。当我通过命令行进行此查询时,它会给出正确的结果,即包含这两个术语的文档显示在顶部,而只包含其中一个的文档显示在底部。

但是,当我从sphinx的php api进行相同的查询时,它会给出错误的结果。我正在使用命令行从命令行进行查询:

  

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 :(得分:0)

您是否尝试过使用SPH_MATCH_EXTENDED2匹配模式? 也许是布尔模式造成了伤害http://sphinxsearch.com/docs/current.html#boolean-syntax