Лучший способ сохранить индекс в реальном времени?
У меня есть файл индекса Solr/Lucene размером около 700 Гб. Документы, которые мне нужно индексировать, читаются в режиме реального времени, примерно 1000 документов каждые 30 минут, и их необходимо индексировать. В моем сценарии script запускается каждые 30 минут, который индексирует документы, которые еще не проиндексированы, поскольку требуется, чтобы новые документы были доступны для поиска как можно скорее, но этот процесс замедляет поиск.
Является ли это лучшим способом индексирования последних документов или есть другой лучший способ!
Ответы
Ответ 1
Во-первых, помните, что Solr не является поисковой системой в режиме реального времени (пока). Существует еще работа.
Вы можете использовать настройки ведущего/ведомого, где индексирование выполняется на главном и поиск в подчиненном устройстве. При этом индексация не влияет на производительность поиска. После того, как фиксация выполняется на главном компьютере, принудительно ведите ведомый для получения последнего индекса от ведущего устройства. Пока новый индекс реплицируется на подчиненном устройстве, он по-прежнему обрабатывает запросы с предыдущим индексом.
Кроме того, проверьте настройки кеширования. Помните, что это может замедлить поиск, если эти параметры слишком агрессивны. Также проверьте запросы, запущенные в новом поисковом событии.
Ответ 2
Вы можете сделать это с Lucene легко. Разделите индексы в нескольких частях (или, точнее, при создании индексов, создайте "меньшие" части.) Создайте поисковик для каждой части и сохраните ссылку на них. Вы можете создать MultiSearcher поверх этих отдельных частей.
Теперь будет только один индекс, который получит новые документы. Регулярно добавляйте документы в этот индекс, фиксируйте и повторно открывайте этот поисковик.
После обновления последнего индекса вы можете снова создать новый многопользовательский режим, используя ранее открытые поисковые системы.
Таким образом, в любой момент вы будете вновь открывать только одного поисковика, и это будет довольно быстро.
Ответ 3
Отметьте http://code.google.com/p/zoie/ оболочку вокруг Lucene, чтобы сделать ее в реальном времени - код, пожертвованный от Linkedin.
Ответ 4
^^ Я делаю это, с нормальным lucene, non solr, и он работает очень хорошо. однако не уверен, что в настоящий момент есть способ solr. twitter недавно отправился с lucene для поиска и эффективно ищет в реальном времени, просто записывая свой индекс при любом обновлении. их индекс полностью хранится в памяти, поэтому обновление/чтение индекса не имеет никакого значения и происходит мгновенно, индекс lucene всегда может быть прочитан при записи до тех пор, пока на нем будет только один сценарий.
Ответ 5
Посмотрите эту страницу wiki