我使用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
答案 0 :(得分:2)
您需要使用OPTION
设置查询时间,如评论中所述。
(以前在配置文件的'searchd'部分有一个(不是每个索引) - 但它只是应用了一个上限,仍然需要使用查询时间参数)
请注意最好动态设置...
$max = max(1000,$offset+$rowsPerPage+300);
$qu = "... limit $offset,$rowsPerPage OPTION max_matches=$max";
而不是只是设置一个愚蠢的高数字。