Масштабируемый свободный текст и параметрический поиск (C #) - PullRequest
1 голос
/ 21 июля 2010

В настоящее время у нас есть приложение, которое должно выполнять очень быстрый поиск по ~ 2 миллионам записей.

Поиск должен выполнять поиск как в большом текстовом поле, так и в ряде целых / десятичных полей между различными диапазонами, а также в различных функциях / вычислениях и сортировке.

В настоящее время мы работаем с большой базой данных MSSQL, используя встроенный механизм свободного текста и некоторую репликацию, чтобы снять нагрузку с транзакционных таблиц.

Однако - как вы уже догадались, это решение не самое масштабируемое.

Я написал небольшое хранилище документов на основе Lucene, и в целом я впечатлен результатами, так как поиск по тексту занимает не больше, чем 1/2 секунды (на записях по 100 тыс.).

Сложная часть - это параметрический поиск - я знаю, что Lucene выполняет базовое согласование диапазонов - однако я чувствую, что нам нужно что-то более мощное.

Я сделал небольшую тестовую базу данных, используя db4o - которая имеет мощные возможности запросов, однако эти запросы довольно медленные - они занимают 15 секунд только для записей 100k - где SQL занимает около 1,5 секунд для поиска в свободном тексте и параметрических поисках.

Кроме того, наша база данных должна иметь разрешение обновления менее 10 минут, при этом примерно 15% записей меняются ежедневно. Наш SQL-сервер в настоящее время обрабатывает это, но начинает скрипеть.

Будем признательны за любые рекомендации по подходящим технологиям и подходам.

Ура, Dave

1 Ответ

0 голосов
/ 22 июля 2010

LinkedIn написал дополнение к Lucene под названием bobo , чтобы расширить свои многогранные поисковые запросы, которые, возможно, стоит изучить.Но я думаю, что bobo действительно нужен только в том случае, если у вас есть очень массивный индекс - должно быть что-то действительно странное, если поиск по 100k документов занимает столько времени.

...