Извините, ребята, я пробовал задавать вопросы о том, как интегрировать данные Википедии в мое приложение, и, честно говоря, я не думаю, что у меня был какой-то успех с моей стороны, так как я пробовал все идеи и как будто сдаюсь, когда читаю тупик или препятствие. Я попытаюсь объяснить, что именно я пытаюсь сделать здесь.
У меня есть простой каталог мест, таких как города и страны. Мое приложение представляет собой простое основанное на php ajax-приложение с возможностью поиска и просмотра. Люди регистрируются и связывают себя с городом, и когда пользователь просматривает города, он / она может видеть людей и компании в этом городе, то есть того, кто является частью нашей системы.
Эта часть довольно легко настраивается сама по себе и работает нормально. Дело в том, что мои результаты поиска будут в формате, то есть кто-то ищет, скажем, Пекин. Он вернется в окне интерфейса с тремя вкладками:
- Первая вкладка будет содержать информационный блок с информацией о городе для Пекина
- Seond будет вкладкой страны, содержащей информационный блок информации о стране из Китая
- На третьей вкладке будут перечислены все контакты в Пекине.
Содержание для первых двух вкладок должно быть из Википедии. Теперь я полностью потерян с тем, что было бы лучшим способом сделать это, и, кроме того, однажды определился с методологией - как мне это сделать и сделать так что это довольно надежно.
Несколько идей, хороших и плохих, которые мне удалось переварить до сих пор:
Запускайте запрос curl непосредственно в Википедии и анализируйте возвращаемые данные каждый раз, когда производится поиск. В этом случае нет необходимости сохранять локальную копию данных в Википедии. Другая проблема заключается в том, что он полностью зависит от данных из удаленного третьего местоположения, и я сомневаюсь, что выполнимо каждый раз делать запрос в Википедию для получения основной информации. Кроме того, учитывая, что данные в Википедии должны анализироваться при каждом запросе - это может быть связано с большой нагрузкой на сервер ... или я здесь размышляю.
Возьмите Скачать дамп википедии и сделайте запрос. Ну, я скачал всю базу данных, но на импорт всех таблиц из дампа xml уйдет целая вечность. Плюс учтите тот факт, что я просто хочу извлечь список стран и городов и их информационных блоков - много информации в дампе мне не нужно.
Создайте свои собственные локальные таблицы и создайте сценарий cron [я объясню, почему здесь используется cron], который каким-то образом анализирует все страницы стран и городов в Википедии и преобразует их в формат, который я могу использовать в своих таблицах , Однако, честно говоря, мне не нужна вся информация в инфобоксах, так как это на самом деле, если бы я мог просто получить базовую разметку инфобоксов как есть - этого было бы более чем достаточно для меня. Как:
Название страны | Информационный блок необработанного текста
Я могу лично извлекать такие вещи, как координаты и другие детали, если я хочу.
Я даже пытался загрузить сторонние наборы данных из infochiumps и dbpedia, но набор данных из infochimps неполон и не содержал всю информацию, которую я хотел отобразить - плюс с dbpedia я абсолютно не представляю, что делать с файлом CSV I скачал инфобокс и боюсь, что он также может быть неполным.
Но это только часть проблемы здесь. Я хочу показать информацию о Википедии - у меня будут все ссылки, указывающие на Википедию, а также хорошая информация из Википедии, отображаемая правильно по всему, НО проблема в том, что мне нужен способ периодически обновлять имеющуюся информацию. из Википедии, по крайней мере, у меня нет полностью устаревших данных. Хорошо, скажем, система, которая может проверять, и если у нас есть новая страна или новое местоположение, она может анализировать информацию и каким-то образом извлекать ее. Я полагаюсь на категории стран и городов в Википедии для этого здесь, но, честно говоря, все эти идеи на бумаге, частично закодированы и это огромный беспорядок.
Я программирую на PHP и MySQL, и мой крайний срок быстро приближается - учитывая вышеизложенную ситуацию и требования, что является лучшим и наиболее практичным методом, которому нужно следовать и реализовывать. Я полностью открыт для идей - практических примеров, если кто-то сделал что-то подобное - я хотел бы услышать: D