我正在做一个项目,我需要用 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);
对于上面它工作正常,但是当我试图最小化查询表的特定字段的响应时间(使用扩展匹配模式,即 SPH_MATCH_EXTENDED2)时,Sphinx 只是无法输出任何结果。我使用的扩展查询如下:-
$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);
谁能认出我哪里出错了?如果我哪里出错了,请帮忙。
提前致谢。
最佳答案
顺便说一句,当您使用 EXTENDED2 模式时,请确保您的 rank 模式已相应设置。
编辑:
不管怎样回到你的问题,看看你可以马上看到的组件/行为代码,没有进行任何错误检查。尝试稍微更改代码,这样您至少可以看到错误和/或警告。
组件
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;
行为
$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;
希望对您有所帮助。
关于php - 与 Cake php 一起实现 Sphinx API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097951/