Определите, является ли геолокация подстрокой строки поиска - PullRequest
2 голосов
/ 03 марта 2012

У меня есть сайт с контентом, доступным для поиска с помощью панели поиска, работающей на Sphinx Search (упомянуто только потому, что я в конечном итоге использую функцию гео-поиска Sphinx).

Поля таблицы включают в себя:

Id, title, description, tags, geolocation

Как я могу определить, содержит ли какая-либо часть строки ссылку на географическое местоположение?Решение, которое я ищу, вероятно, будет выполнено в PHP, и тогда я буду искать, используя Sphinx, как обычно.

Например, если кто-то ищет что-либо из следующего:

Car parts in California

Car parts near San Francisco

90210 car parts

Тогда я хотел бы иметь возможность вернуть список всех записей, которые соответствуют car parts в пределах определенного радиуса желаемого местоположения.

Я открыт для любых предложений относительно того, как сделать эту проблему проще.

Примечание: запись подстроки геолокации пользователем является необязательной.Следовательно, решение должно определить его существование и затем действовать соответствующим образом.

1 Ответ

2 голосов
/ 04 марта 2012

Для этого можно использовать несколько API:

http://www.datasciencetoolkit.org/ <- посмотрите на Geodict </p>

http://developer.yahoo.com/geo/placemaker/guide/web-service.html

http://developers.metacarta.com/api/ <- посмотрите на анализатор запросов </p>

... они выполняют всю «тяжелую работу» за вас:)

Альтернативно, вы можете создать свой собственный сам сфинкс!

Скачать копию базы данных geonames http://www.geonames.org/

Вставьте его в таблицу базы данных и создайте на нем индекс сфинкса.

Затем возьмите строку запроса и выполните запрос SPH_MATCH_ANY к таблице 'geo'.

Затем посмотрите набор результатов sphinx и извлеките все совпадения мест - чтобы сделать новый запрос без имени места.

Этот индекс сфинкса также вернет вам гео координаты, которые вы можете использовать для реального запроса:)

(вы могли бы немного его оптимизировать, чтобы специально заметить 'in / near' и либо просто удалить их, либо использовать их для явного определения названия места)

Удачи!

(обработка почтового индекса - также может быть выполнена таким же образом - также поместите почтовые индексы в индекс сфинкса. Есть доступные для скачивания копии, доступные онлайн. Или могут быть обработаны как особый случай - поиск номера)

...