Sphinx根据排序返回不一致的结果集


Sphinx returns inconsistent result set depending on sorting

我正在为正在开发的web应用程序实现多语言索引。目前,记录有几种语言,英语、马来语和马来语;阿拉伯语(但它们不分为不同的列)。当前仅启用了English stemmer。

只生成两个索引,分别是带茎索引和非带茎索引。我对词干索引有问题,因为返回的结果集不一致,这取决于排序列。

这两个查询(来自词干索引),每个查询都返回不同数量的总结果,尽管它们之间的区别只是排序顺序。

SELECT * FROM test1stemmed WHERE MATCH('@institution universiti') GROUP BY art_id ORDER BY art_title_ord ASC;
SELECT * FROM test1stemmed WHERE MATCH('@institution universiti') GROUP BY art_id ORDER BY art_title_ord DESC;

但是,如果在非词干索引上运行相同的查询,则结果数相等。

我对SphinxPHP API也有同样的问题:

$sp = new SphinxClient();
$sp->SetServer('localhost', 9312);
$sp->SetMatchMode(SPH_MATCH_EXTENDED);
$sp->SetGroupBy('art_id', SPH_GROUPBY_ATTR, "$sp_sort_column $sort");
$sp->SetLimits($offset, $rows_per_page, 1000);
$sp->Query("$q", 'test1stemmed');

我错过了什么?

我在这里的文档中遗漏了一些内容http://sphinxsearch.com/docs/2.0.2/clustering.html

警告:分组是在固定内存中完成的,因此其结果只是近似的;因此,total_found中报告的组可能比实际存在的组更多@计数也可能被低估。为了减少误差,应该提高max_matches。如果max_matches允许存储所有找到的组,则结果将100%正确。

因此,我可以通过增加max_matches中的值来解决此问题,但由于绝对不希望输入非常大的值,因此我会修复查询。