0

RT インデックスのクエリに SphinxQL を使用していますが、数百万のレコードが含まれています。私の問題は、結果セットの 2 ページ目をクエリしようとしたときです

$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」セクションに1つありました(インデックスごとではありません)-ただし、上限を適用しただけで、とにかくクエリ時間パラメーターを使用する必要があります)

動的に設定するのが最善であることに注意してください...

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

ばかげて高い数値を設定するだけではありません。

于 2015-06-11T12:25:55.783 に答える