Php 为什么斯芬克斯中的这个查询失败了?

Php 为什么斯芬克斯中的这个查询失败了?,php,sphinx,Php,Sphinx,我使用的是sphinx,在大多数正常使用的查询中,它会按预期返回结果。然而,有一个查询拒绝这样做。我正在使用以下查询代码: $cl = new SphinxClient(); $cl->SetServer( "localhost", 9312 ); $cl->SetMatchMode( SPH_MATCH_EXTENDED ); $cl->SetRankingMode ( SPH_RANK_SPH04 ); $q = '"' . $cl->EscapeString($_

我使用的是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”的提供者的结果吗?

那么quorum操作符是“最外层”的操作符。引号内的所有单词都是它使用的单词。在那里,@没有任何特殊的意义。因此,查询与

"air compressor provider 2"/1
因此,只需要这4个单词中的一个

我不知道你是不是打算这么做

"air compressor"/1 @provider 2
这将只对两个单一关键字执行仲裁,然后字段语法将起作用,并要求“2”匹配提供程序