Sphinx中的部分与精确匹配

时间:2014-06-21 10:37:37

标签: php sphinx

我尝试设置一个简单的查询(取自用户搜索),以便在当前简单的图书标题和作者表中查找结果。我只是用这个来测试一下Sphinx。

到目前为止我的PHP是这样的:

$oSphinx->setFieldWeights(array('title' => 50, 'author' => 10));
$oSphinx->setMatchMode(SPH_MATCH_EXTENDED2);
$oSphinx->setSortMode(SPH_SORT_RELEVANCE);
$oSphinx->setRankingMode(SPH_RANK_SPH04);
$rMatches = $oSphinx->query('Sarah J. Maas');

我的最大中缀和字长是3,所以我假设" J。"被剥离查询以进行搜索。我的问题是返回了这两个结果:

Sarah J. Maaster

Sarah J. Maas

它们都具有相同的权重,并且它们在数据集中以该顺序出现,因此Sphinx返回它们的顺序。有没有办法来衡量"确切的"匹配上面更模糊的一个?我知道有一个exact_hit修饰符,但这似乎没有任何影响(无论如何它都包含在SPH_RANK_SPH04中)。我的期望是第二个会有更高的权重因为" Maas"匹配该结果中的完整单词而不是子字符串,但这似乎并非如此。

我正在使用Sphinx 2.0.4(Ubuntu 14.04 LTS包)。

谢谢!