2012-06-21 5 views
4

В настоящее время я разрабатываю приложение для Android, которое использует API-интерфейс Facebook для получения страниц/мест на основе местоположения пользователя. Я также хочу отфильтровать результаты по категориям, например, например, рестораны. Сейчас я просто искал название «ресторан», как это: https://graph.facebook.com/search?q=restaurant&type=place&center=37.76,-122.427&distance=1000Поиск в Facebook Graph API по категориям

Проблема заключается в том, что он не найдет страниц/мест, которые не имеют название «ресторан», и он также возвращается места, don' t имеют ничего общего с ресторанами. У меня также есть языковой вопрос, в неанглийских странах мой поиск полностью завершится.

Возможное решение, которое я рассматриваю, - это получить все места в диапазоне и проанализировать их в приложении для категории или имени. Очевидно, это приносит много накладных расходов на мое приложение.

Мне было интересно, есть ли лучшее решение, например, использование FQL для фильтрации результатов?

ответ

1

Должно быть, но я не могу разгадать, как это сделать.

Этого FQL запрос получит вам информацию обо всех местах, вблизи известного места:

SELECT name, page_id, categories, description, general_info 
    FROM page WHERE page_id IN 
    (SELECT page_id FROM place WHERE 
     distance(latitude, longitude, "37.76", "-122.427") < 1000 
    ) 

Поле categories представляет собой массив со значениями id и name. Глядя на эти результаты, есть серия названий категорий, таких как «Ресторан»: «Итальянский ресторан», «Бар/ресторан» и т. Д.

То, что я не могу найти, - это способ добавить к нему WHERE categories возвращает данные.

+0

Спасибо, я могу попробовать это, но я думаю, что это дает мне те же результаты, что и использование базового API-запроса графика. Я считаю, что причина, по которой вы не можете использовать категории «WHERE», а не индексный столбец, как вы можете видеть [здесь] (https://developers.facebook.com/docs/reference/fql/page). –

+0

Неправда. Ваша первая фраза WHERE в FQL должна быть индексируемой. После этого вы можете добавить критерии WHERE для неиндексируемых столбцов, чтобы ограничить ваши результаты. Самое большое различие с FQL и запросом Graph API - это additio n поля категорий, которое позволяет вам окончательно определить, что «Hog & Rocks» - это ресторан. – cpilko

+0

Хорошая точка. Но используя Graph API, я также могу получить список страниц и проверить поле каждой категории. Таким образом, нельзя добавить к вам второе предложение, как в обычном SQL? –

Смежные вопросы