Использование поискового сервера с cakephp - PullRequest
1 голос
/ 28 июля 2011

Я пытаюсь реализовать индивидуальный поиск в моем приложении. Структура таблицы приведена ниже

основной стол:

Учитель

подстолы:

навыки

skill_values ​​

город

city_values ​​

Поиск будет запускаться с местоположением, которое находится в таблице city_values ​​со ссылочным полем user_id и city_id. Здесь название города, его широта и долгота находятся под таблицей городов. Поиск также включает в себя навыки, таблицы отношений похожи на город. Таблица users и таблица skill_values ​​могут быть связаны с полем user_id в таблице skill_values. Таблица скиллов и skill_values, связанных с полем skill_id в таблице skill_values.

Здесь нам нужно найти местоположение пользователя, который выполняет этот поиск, и отфильтровать результаты в радиусе 20 миль. Также есть несколько других фильтров.

Моя проблема в том, что мне нужно отфильтровать эти результаты без перезагрузки страницы. Поэтому я использую ajax, но если количество записей увеличится, мой ajax-запрос займет много времени для получения ответа.

Это хорошая идея, если я использую некоторые серверы поиска с открытым исходным кодом, такие как sphinx или solr, для получения результатов с сервера? Я использую CAKEPHP для разработки, и мое приложение размещено на облачном сервере.

1 Ответ

0 голосов
/ 28 июля 2011

... но если количество записей увеличится, мой ajax-запрос займет много времени для получения ответа.

Независимо от технологии поиска, должен быть механизм разбиения на страницыкакой-то.

Поэтому вы должны иметь возможность установить ограничение или максимальное количество результатов, возвращаемых на страницу.

Когда пользователь выполняет поисковый запрос, вы можете использовать Javascript для запроса первой страницы.результатов.

Затем вы можете просто увеличить номер страницы и запросить вторую, третью, четвертую страницу и т. д.

Это должно означать, что первые N результатов всегда появляются примерно в одинаковом количестве.времени.

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

Страницы шкалы времени / ленты новостей на Twitter или Facebook являются хорошим примером этой техники.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...