与Cake php一起实现Sphinx API的问题

Nis*_*ava 11 php full-text-search sphinx cakephp

我正在开发项目,我需要用Cake php实现SphinxSearch.所以我只想尝试使用组件和行为.它的链接是: -

http://bakery.cakephp.org/articles/eugenioclrc/2010/07/10/sphinx-component-and-behavior

我正在申请Sphinx API,如下所示:

$sphinx = array('matchMode' => SPH_MATCH_ALL, 'sortMode' => array(SPH_SORT_EXTENDED => '@relevance DESC'));

$results = $this->ModelName->find('all', array('search' => 'Search_Query', 'sphinx' => $sphinx));

pr($result);
Run Code Online (Sandbox Code Playgroud)

对于上面它工作正常,但是当我试图最小化响应时间查询表中的一个特定字段(使用扩展匹配模式,即SPH_MATCH_EXTENDED2),斯芬克斯只不过没有输出任何结果.我使用的扩展查询如下: -

$sphinx = array('matchMode' => SPH_MATCH_EXTENDED2, 'sortMode' => array(SPH_SORT_EXTENDED => '@relevance DESC'));

$results = $this->ModelName->find('all', array('search' => '@Field_name Search_Query', 'sphinx' => $sphinx));

pr($results);
Run Code Online (Sandbox Code Playgroud)

任何人都能认出我在哪里出错了吗?如果我在哪里错了,请帮忙.

提前致谢.

小智 1

顺便说一句,当您使用 EXTENDED2 模式时,请确保您的排名模式已相应设置。

编辑

无论如何,回到你的问题,查看该组件/行为代码,你可以立即看到没有进行任何错误检查。尝试稍微更改一下代码,这样您至少可以看到错误和/或警告。

成分

if(!isset($query['search'])){ 
  $result = self::$sphinx->Query('', $indexes);     
} else { 
  $result = self::$sphinx->Query($query['search'], $indexes); 
}

if ($result === false) {
  // throw new SphinxException();
  die(self::$sphinx->GetLastError());
}
$warn = self::$sphinx->GetLastWarning();
if ($warn) echo $warn;
Run Code Online (Sandbox Code Playgroud)

行为

$result=$this->runtime[$model->alias]['sphinx']->search($s);
if ($result === false) {
  die($this->runtime[$model->alias]['sphinx']->GetLastError());
}
$warn = $this->runtime[$model->alias]['sphinx']->GetLastWarning();
if ($warn) echo $warn;
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。