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)
我希望这有帮助。