Вопрос:
У меня есть проблема, которую нужно решить.
Я хочу запросить все события, и я хочу найти конкретную строку.
Код FQL выглядит следующим образом:
ВЫБЕРИТЕ eid, имя, местоположение, start_time, end_time ИЗ события, ГДЕ
strpos(нижний (местоположение), ‘test’) >=0
Когда я использовал этот код FQL, всегда возникала ошибка.
Сообщение об ошибке «Ваше утверждение не подлежит индексации. Предложение WHERE должно содержать индексируемый столбец. Такие столбцы отмечены * в таблицах, связанных сhttp://developers.facebook.com/docs/reference/fql«
Пожалуйста, изложите мне свою точку зрения ~ спасибо 🙂
Ответ №1:
Что ж, сообщение об ошибке понятно:
Ваше утверждение не подлежит индексации. Предложение WHERE должно содержать индексируемый столбец. Такие столбцы отмечены * в таблицах, связанных сhttp://developers.facebook.com/docs/reference/fql
Так просто ваш подход не сработает.
Редактировать:
Чтобы дополнительно объяснить, почему это невозможно:
Facebook имеет дело с «более чем 900 миллионами объектов, с которыми взаимодействуют люди (страницы, группы, события и страницы сообщества)». ссылка.
Таким образом, в основном предоставление вам (всем разработчикам приложений) возможности поиска по ВСЕМ страницам, событиям, группам … и т.д. Определенно приведет к сбою системы. Вот почему эти «индексируемые» поля выбраны тщательно.
Например, если вы хотите искать события по «местоположению», то эти события должны быть «как-то» связаны с вашим приложением. Например, созданный вашим приложением, и вы должны где-то хранить их идентификаторы, чтобы что-то подобное работало:
SELECT eid, name, location, start_time, end_time FROM event WHERE
strpos(lower(location),'test') >=0 AND eid IN (ids_from_your_db)
Комментарии:
1. Да ~ Я знаю, если я хочу найти некоторые события, которые содержат определенную строку, а индекс uid нестабилен. Я хочу найти решение для решения этой проблемы.