0

我使用MySQL + Sphinx来存储数百万行数据。我们有网站可以查看我们数据库中的所有信息。

例如,电影标题(100,000,000行)。我需要在我们的网站上查看所有这些内容,每页 100 个标题。另外,我需要按演员受欢迎程度排序。

对于前 10 页,一切都很好。但在那之后我达到了max_matches限制。增加此限制将强制 sphinx 使用更多 CPU/RAM。

另外,我什至无法将 max_matches 设置为20,000,000

警告:max_matches=20000000 越界;使用默认 1000

我可以使用 MySQL 执行如下查询:

SELECT * FROM titles WHERE tid >= $start AND tid <= $end

使用tid索引。但我无法按tid对其进行排序。我需要按其他表中的信息对我的标题进行排序。

访问数百万行、排序并快速完成的最佳方法是什么。请帮忙。

更新:来自狮身人面像来源:/src/searchd.cpp

if ( iMax<0 || iMax>10000000 )
{
    sphWarning ( "max_matches=%d out of bounds; using default 1000", iMax );
} else
{
    g_iMaxMatches = iMax;
}

10000000是极限吗?我怎样才能得到更多的补偿?

4

2 回答 2

3

如果您的排序顺序基于属性(演员受欢迎程度) - 而不是狮身人面像计算的重量 - 那么可以只使用游标。

因为可以通过这个属性过滤。

http://sphinxsearch.com/forum/search.html?q=cursors&f=1

我确实想知道你是否真的需要它。每页 100 个项目,max_matches 为 1M,意味着 10,000 页结果。您的访问者真的会阅读 10,000 页的结果吗?

于 2012-11-01T12:35:15.163 回答
1

使用LIMIT( select api ) 检索特定页面。

您想要订购的任何东西都需要包含在索引中,您不能在此处使用连接。

于 2012-11-01T03:42:44.150 回答