我正在制作一个布尔查询,即"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/>";
}
}
}
?>
以上返回错误的结果。
有人可以指导我做错了吗?
答案 0 :(得分:0)
您是否尝试过使用SPH_MATCH_EXTENDED2匹配模式? 也许是布尔模式造成了伤害http://sphinxsearch.com/docs/current.html#boolean-syntax