Попробуйте запрос list=search
. Например:
(Поскольку вы сказали, что вас интересует только количество подходящих страниц, я включил srlimit=1
и srprop=
в запрос, чтобы минимизировать возвращаемую дополнительную информацию. По-видимому, нет способа удержать API по крайней мере в возврате хотя название первого совпадения; srlimit=0
просто выдает сообщение об ошибке.)
Что касается пределов запросов, то существует ограничений на количество результатов на запрос , но я не думаю, что MediaWiki применяет какие-либо жесткие ограничения на коэффициент , при котором вы запрашиваете API. MediaWiki ограничивает скорость редактирования, но я не думаю, что такие ограничения в настоящее время применяются для поиска.
Я полагаю, что рекомендуется запускать запросы последовательно & mdash; то есть дождитесь завершения предыдущего запроса, прежде чем отправлять следующий. Это обеспечивает своего рода автоматическое ограничение скорости, поскольку, если серверы заняты, выполнение ваших запросов займет больше времени. Если вы хотите играть хорошо, вы также можете включить maxlag
параметр в свои запросы (предпочтительно с экспоненциальный откат , если он не пройден); Механизм maxlag действительно предназначен больше для автоматического редактирования , чем для поиска, но он, по крайней мере, гарантирует, что ваш код не попадет на сервер Викимедиа в те моменты, когда они особенно перегружены.
Кроме того, если вы хотите выполнить лот запросов такого рода, вы можете подумать о загрузке дампа базы данных Википедии и о его индексации самостоятельно (как вы упомянули в ваш вопрос) или просто читаете его за один проход и подсчитываете соответствующие страницы по мере их появления.