В настоящее время у нас есть приложение, которое должно выполнять очень быстрый поиск по ~ 2 миллионам записей.
Поиск должен выполнять поиск как в большом текстовом поле, так и в ряде целых / десятичных полей между различными диапазонами, а также в различных функциях / вычислениях и сортировке.
В настоящее время мы работаем с большой базой данных MSSQL, используя встроенный механизм свободного текста и некоторую репликацию, чтобы снять нагрузку с транзакционных таблиц.
Однако - как вы уже догадались, это решение не самое масштабируемое.
Я написал небольшое хранилище документов на основе Lucene, и в целом я впечатлен результатами, так как поиск по тексту занимает не больше, чем 1/2 секунды (на записях по 100 тыс.).
Сложная часть - это параметрический поиск - я знаю, что Lucene выполняет базовое согласование диапазонов - однако я чувствую, что нам нужно что-то более мощное.
Я сделал небольшую тестовую базу данных, используя db4o - которая имеет мощные возможности запросов, однако эти запросы довольно медленные - они занимают 15 секунд только для записей 100k - где SQL занимает около 1,5 секунд для поиска в свободном тексте и параметрических поисках.
Кроме того, наша база данных должна иметь разрешение обновления менее 10 минут, при этом примерно 15% записей меняются ежедневно. Наш SQL-сервер в настоящее время обрабатывает это, но начинает скрипеть.
Будем признательны за любые рекомендации по подходящим технологиям и подходам.
Ура,
Dave