我正在使用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'的提供商的结果吗?
答案 0 :(得分:0)
法定人数运算符是'最外层'运算符。引号内的所有单词都将是它使用的单词。 @在那里没有任何特殊意义。因此查询与
相同"air compressor provider 2"/1
因此,只需要这4个单词中的一个。
我想知道你是不是想做什么
"air compressor"/1 @provider 2
这只会对两个单个关键字执行仲裁,然后字段语法就可以工作,并且需要'2'才能匹配提供程序。