Подходит ли Lucene.Net в качестве поисковой системы для часто меняющегося контента? - PullRequest
12 голосов
/ 07 ноября 2008

Подходит ли Lucene.Net в качестве поисковой системы для часто меняющегося контента?

Или, точнее, кто-нибудь может высказать субъективное мнение о том, как быстро можно обновлять индексы lucene.net. Любые другие подходы к поиску часто меняющегося контента были бы хороши.

Мы разрабатываем форум. Сообщения форума будут часто добавляться в репозиторий форума. Мы думаем, что нам нужно, чтобы эти сообщения были добавлены в индекс lucene очень быстро (<0,5 с), чтобы стать доступными для поиска. Первоначально в хранилище будет около 5E6 сообщений. Предположим, что поисковая система работает на не экзотическом сервере (я знаю, что это очень расплывчато!). </p>

Другие предложения, касающиеся решения вопроса поиска часто меняющегося контента, приветствуются. Сообщения на форуме должны быть доступны для поиска по переменному количеству именованных тегов (имя тега и значение должны совпадать). Подход на основе SQL (основанный на схеме Toxi) не дает нам желаемой производительности.

Ответы [ 2 ]

9 голосов
/ 07 ноября 2008

Out форумы (http://episteme.arstechnica.com) используют Lucene в качестве бэкэнда поиска, так что это выполнимо. Посты не индексируются не так быстро, как хотелось бы, но мы могли бы решить эту проблему, увеличив оборудование для индексирования и используя более разумная стратегия кэширования.

Общий ответ на этот вопрос: это зависит от того, какой у вас шаблон записи / обновления. Форумы относительно просты, так как большая часть контента является новой, а существующий контент обновляется реже.

Для форума я бы порекомендовал иметь индекс «архив» и «живой» индекс. Индекс в реальном времени может содержать сообщения за последний день, неделю, год, в то время как индекс архива будет включать большое количество сообщений, которые, вероятно, никогда больше не будут затронуты. Поэтому, когда кто-то создает новое сообщение, оно будет изначально проиндексировано в живом индексе. Позже некоторое пакетное задание очистит текущий индекс и переиндексирует все в архив.

Lucene отлично справляется с запросами по нескольким индексам. Вы должны злоупотреблять этой способностью. :)

4 голосов
/ 20 ноября 2008

Lucene.Net работает очень быстро, однако есть много вещей, которые могут замедлять запросы при неправильном использовании. Я настоятельно рекомендую прочитать книгу Эрика Хатчера и Отиса Господнетича Lucene in Action . Он содержит очень хорошую главу о тестировании производительности и настройке.

...