我尝试设置一个简单的查询(取自用户搜索),以便在当前简单的图书标题和作者表中查找结果。我只是用这个来测试一下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包)。
谢谢!
答案 0 :(得分:0)
尝试开启expand_keywords
http://sphinxsearch.com/docs/archives/manual-2.0.4.html#conf-expand-keywords
和index_exact_words
http://sphinxsearch.com/docs/archives/manual-2.0.4.html#conf-index-exact-words
还需要enable_star
:)
http://sphinxsearch.com/docs/archives/manual-2.0.4.html#conf-enable-star