Считать результаты Википедии - PullRequest
2 голосов
/ 07 ноября 2011

Я хотел бы получить количество страниц Википедии, соответствующих условию. например,

  • "дом" -> 1200 страниц
  • "человек" -> 13 000 страниц
  • "Университетский колледж" -> 360 страниц

Среди многих других способов я могу сделать это, проиндексировав Википедию с помощью Lucene, но это довольно много времени.

Есть ли способ выполнить этот тип запроса в Media Wiki API ?

Каков предел запросов для API Википедии?

Ура, Mulone

1 Ответ

0 голосов
/ 07 ноября 2011

Попробуйте запрос list=search. Например:

(Поскольку вы сказали, что вас интересует только количество подходящих страниц, я включил srlimit=1 и srprop= в запрос, чтобы минимизировать возвращаемую дополнительную информацию. По-видимому, нет способа удержать API по крайней мере в возврате хотя название первого совпадения; srlimit=0 просто выдает сообщение об ошибке.)

Что касается пределов запросов, то существует ограничений на количество результатов на запрос , но я не думаю, что MediaWiki применяет какие-либо жесткие ограничения на коэффициент , при котором вы запрашиваете API. MediaWiki ограничивает скорость редактирования, но я не думаю, что такие ограничения в настоящее время применяются для поиска.

Я полагаю, что рекомендуется запускать запросы последовательно & mdash; то есть дождитесь завершения предыдущего запроса, прежде чем отправлять следующий. Это обеспечивает своего рода автоматическое ограничение скорости, поскольку, если серверы заняты, выполнение ваших запросов займет больше времени. Если вы хотите играть хорошо, вы также можете включить maxlag параметр в свои запросы (предпочтительно с экспоненциальный откат , если он не пройден); Механизм maxlag действительно предназначен больше для автоматического редактирования , чем для поиска, но он, по крайней мере, гарантирует, что ваш код не попадет на сервер Викимедиа в те моменты, когда они особенно перегружены.

Кроме того, если вы хотите выполнить лот запросов такого рода, вы можете подумать о загрузке дампа базы данных Википедии и о его индексации самостоятельно (как вы упомянули в ваш вопрос) или просто читаете его за один проход и подсчитываете соответствующие страницы по мере их появления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...