В настоящее время у нас есть приложение, которое должно выполнять очень быстрый поиск на ~ 2 мельничных записях.Масштабируемый freetext и параметрический поиск (C#)
Для поиска требуется как большое поле свободного текста, так и целое число/десятичные поля между различными диапазонами, а также различные функции/вычисления & сортировка.
В настоящее время мы обрабатываем это с помощью большой базы данных MSSQL, используя встроенный механизм freetext и некоторую репликацию, чтобы переместить загрузку из транзакционных таблиц.
Однако, как вы, возможно, догадались, это решение не является наиболее масштабируемым.
Я написал небольшое хранилище документов на базе Lucene и, как правило, впечатлен результатами, при этом поиск текста не занимает много времени больше, чем 1/2 секунды (на 100 тыс. Записей).
Жесткая часть - это параметрический поиск. Я знаю, что Lucene выполняет базовое сопоставление диапазона, однако я чувствую, что нам нужно что-то более мощное.
Я сделал небольшую тестовую базу данных, используя db4o - у которой есть мощные возможности запросов, однако эти запросы довольно медленны - занимает более 15 секунд на только 100 тыс. Записей - в то время как SQL занимает около 1,5 секунд для параметрического поиска freetext &.
Кроме того, наша база данных должна иметь разрешение обновления менее 10 минут, при этом приблизительно 15% записей меняются ежедневно. Наш SQL-сервер работает с этим сейчас, но начинает скрипеть.
Любое руководство по подходящим технологиям & будет оценено по достоинству.
Приветствия, Dave
Не могли бы вы пояснить, что вы подразумеваете под «нужно что-то более мощное». о параметрах Луценко? Он достаточно мощный и должен удовлетворять большинству запросов. – Mikos
db4o, занимающий 15 секунд на объектах 100k, не похож на нашу базу данных. Может быть, вы хотите опубликовать свой код на форумах db4o? http://developer.db4o.com/Forums.aspx Я уверен, что что-то можно сделать для скорости. –
Почему бы не использовать полнотекстовый поиск SQL Server? –