Sphinx RT Index - 有没有办法在Index定义中设置max_matches

时间:2015-06-11 07:46:54

标签: php sphinx sphinxql

我使用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

1 个答案:

答案 0 :(得分:2)

您需要使用OPTION设置查询时间,如评论中所述。

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

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

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

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