стратегия обновления индекса Lucene - PullRequest
0 голосов
/ 31 января 2012

Я работаю над созданием веб-сервера Lucene (на Java) для своего приложения и ожидаю почти 100 поисковых запросов в секунду вышестоящим приложением на этот сервер (этот сервер будет размещаться на различных физических боксах, которые сбалансированы балансировщиком нагрузки). ).

Перспектива данных У меня будет почти 50 КБ документов (каждый документ размером менее 1 КБ), и ежедневно я буду иметь новые / обновленные ~ 500 документов.

Я хотел бы знать наиболее рекомендуемый способ создания индексов для 500 документов в день, не влияя на производительность процесса сканирования в восходящем направлении.

Я не могу использовать какое-либо общее местоположение между всеми моими серверами для обмена индексами файлов, пару вариантов, которые я могу придумать

1) использовать индексы БД (JDBC Directory) - не уверен в PRO и CON 2) использовать индексы RAMDirectory - не уверен в стратегии обновления. 3) использовать файловые индексы - не могу придумать надежную конструкцию для создания и распространения файловых индексов между различными физическими блоками.

Хотелось бы узнать мысли / рекомендации по правильной стратегии настройки индекса.

1 Ответ

0 голосов
/ 01 февраля 2012

Вам действительно нужно создать сервер запросов / индексирования самостоятельно?

Рассматривали ли вы ElasticSearch ?Он автоматически разделит и реплицирует ваш индекс, вам просто нужно настроить, сколько разделов вы хотите и сколько реплик для каждого раздела.Это также даст вам простой HTTP-интерфейс для индексации и запроса.В ElasticSearch все узлы / экземпляры одинаковы, поэтому вы можете отправлять и запрашивать документы на любом из узлов.

С индексом всего 50 КБ, я думаю, один раздел с несколькими репликами будет обрабатывать ваши 100 запросов в секунду.требование.

В любом случае кажется, что ваши требования невелики.Документы размером 50 КБ с размером менее 1 КБ кажутся подходящими для индекса в памяти (RAMDirectory в lucene).В зависимости от запросов, которые будут отправлены в индекс, у вас может быть меньше машин, обрабатывающих 100 запросов в секунду.

Индексирование новых документов может быть выполнено разными способами, учитывая, что у вас нет жестких требований к задержке обновления, а количество новых документов очень мало.Вы можете отправлять документы по HTTP каждому экземпляру, отправлять через ssh / ftp CSV-файл (или что-то еще) с обновленными документами, и каждый раз каждый день индексировать этот файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...