Мне нужно создать средство поиска в рамках нового проекта для клиента. Записями будут события, происходящие в одну или несколько конкретных дат. Было бы здорово получить совет SO о том, какие инструменты лучше всего использовать для следующих требований:
- Требуется (многогранный) поиск десятков тысяч записей (на основе таких полей, как категория, дата, цена и т. д.)
- Необходимо искать в полях с несколькими значениями (т.е. тегах)
- Должна быть возможность упорядочивать по статическим факторам (таким как цена, расстояние и т. д.)
- Должна быть возможность упорядочивать по динамическим/часто меняющимся факторам (таким как вовлеченность пользователей/трафик и т. д.)
- Должен иметь возможность возвращать только те записи, для которых была активность в собственной социальной сети пользователя (например, «показывать мне только результаты, с которыми взаимодействовали мои друзья»).
- Будет развернут в EC2
Мои текущие мысли таковы:
- Используйте гибрид чего-то вроде Amazon CloudSearch и Redis
- Десятки тысяч на самом деле не так уж много записей. Возможно, вы выполняете основную часть работы в СУБД с помощью CloudSearch для полнотекстового поиска?
- Используйте Redis для ведения наборов записей, с которыми недавно взаимодействовали, для каждого пользователя, а затем объедините их, чтобы получить записи в сети пользователя.
Меня больше всего беспокоит задержка при извлечении, возможно, многих тысяч идентификаторов из различных служб (Redis/CloudSearch), а затем их объединение в клиентском коде. Однако, возможно, это необоснованно.
Я надеюсь, что, возможно, есть технологический стек, который я пропустил, который может многое решить для меня. Я не хочу изобретать велосипед.
Любые предложения приветствуются!