0

我正在使用 SphinxQL 查询 RT 索引,它包含数百万条记录。我的问题是当我尝试查询结果集的第二页时

$searches = $prepStatement->query("select * from searchAnalytics limit $offset,$rowsPerPage")->execute();

它抛出错误

offset out of bounds (offset=1000, max_matches=1000) [ select * from searchAnalytics limit 1000,1000]

有人可以帮我解决这个问题吗?有没有办法在索引定义中设置 max_matches ?

我的指数是

type = rt
rt_mem_limit = 1024M
path = /Users/vimson/projects/sphinx/data/searchAnalytics

rt_attr_string = SessionId
rt_attr_timestamp = Time
rt_field = Query
rt_attr_string = Query
rt_field = SearchLocation
rt_attr_string = SearchLocation
rt_attr_uint = Location
rt_attr_uint = CourseType
rt_attr_uint = SearchType
rt_attr_uint = CourseCount
rt_attr_multi = Courses
4

1 回答 1

2

您需要OPTION按照注释中的说明设置查询时间。

(配置文件的“searchd”部分曾经有一个(不是每个索引)-但它只是应用了一个上限,仍然需要使用查询时间参数)

请注意最好动态设置它...

$max = max(1000,$offset+$rowsPerPage+300);
$qu = "... limit $offset,$rowsPerPage OPTION max_matches=$max";

不仅仅是设置一个愚蠢的高数字。

于 2015-06-11T12:25:55.783 回答