Как надежно проверять страницы Википедии через API, используя условия поиска в разных случаях - PullRequest
1 голос
/ 10 февраля 2012

У меня есть сайт, который позволяет пользователям отправлять фотографии дикой природы.После загрузки они могут идентифицировать вид на фотографии, например, «Белый медведь».

Это заставляет меня получать информацию из Википедии об этом виде, используя этот поисковый термин:

$query =  "http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=" . $query;
$pages = file_get_contents($query);

Такой запрос возвращает одно из следующего:

  • Массив pageids, который я могу затем запросить для содержимого этой страницы
  • Ничего, потому что просто нет никакого совпадения
  • РЕДАКТИРУЕМЫЙ результат, который позволяет мне разрешить страницу с правильнымимя

Проблема, с которой я столкнулся, связана с корпусом.Например, поисковый запрос «Молочный аист» ничего не возвращает, даже редирект.«Молочный аист» работает.Прописывание каждого слова в запросе также не является решением, так как могло бы случиться так, что некоторые страницы в нижнем регистре, тогда как запрос в верхнем регистре не работает.Нет последовательности.

Я ищу способ сделать это более надежным.Не должно быть, чтобы запрос не выполнялся из-за неправильного ввода в регистр, что невозможно даже предсказать на стороне пользователя.

Кто-нибудь знает решение для этого?Кроме того, чтобы попробовать все возможные комбинации оболочек?

Примечание: Некоторые могут предложить вместо этого использовать dbpedia, но это не решение для моих общих потребностей.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

К сожалению, нет простого решения - читайте http://www.mediawiki.org/wiki/API:Opensearch#Note_on_case_sensitivity

Вместо этого вы можете попробовать использовать opensearch, чтобы найти подходящий регистр (если обычный запрос не возвращает ничего полезного): http://en.wikipedia.org/w/api.php?action=opensearch&search=milky+stork&namespace=0&suggest= даст вам

    ["milky stork",["Milky Stork"]]
1 голос
/ 10 февраля 2012

Я думаю, что пробовать каждую возможную комбинацию - жизнеспособное решение. Итак, ваш запрос может выглядеть так:

http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=Milky stork|Milky Stork

Обратите внимание, что первая буква не чувствительна к регистру в Википедии.

...