为什么Sphinx中的这个查询失败了?

时间:2017-01-21 18:51:24

标签: php sphinx

我正在使用sphinx,在大多数正常使用的查询中,它会按预期返回结果。然而,一个查询拒绝这样做。我使用以下查询代码:

$cl = new SphinxClient();
$cl->SetServer( "localhost", 9312 );
$cl->SetMatchMode( SPH_MATCH_EXTENDED  );
$cl->SetRankingMode ( SPH_RANK_SPH04 );
$q = '"' . $cl->EscapeString($_REQUEST['keyword']) . ' @provider 2"/1';
$result = $cl->Query($q, 'mainIndex' );

查询最终成为:

"air compressor @provider 2"/1

有人可以解释为什么此查询仍会返回ID不同于'2'的提供商的结果吗?

1 个答案:

答案 0 :(得分:0)

法定人数运算符是'最外层'运算符。引号内的所有单词都将是它使用的单词。 @在那里没有任何特殊意义。因此查询与

相同
"air compressor provider 2"/1

因此,只需要这4个单词中的一个。

我想知道你是不是想做什么

"air compressor"/1 @provider 2

这只会对两个单个关键字执行仲裁,然后字段语法就可以工作,并且需要'2'才能匹配提供程序。