Как загрузить существующий индекс Lucene в Infinispan?
В моей системе с Infinispan 6.0.2 я добавил некоторые данные в кеш и проиндексировал их с помощью lucene. Это хорошо работает для поисковой части.
Но поскольку на сервере существуют кэши, иногда, когда сервер выходит из строя, мне нужно перезагрузить данные и проиндексировать их. Это занимает много времени.
Затем я обнаружил, что Infinispan может хранить индекс в базе данных и загружать из существующего индекса Lucene. Я думаю, что это должно исправить мою проблему. Но в руководстве пользователя Infinispan мало информации, я не знаю, как это сделать. Может кто-нибудь дать мне пример???
1 ответ
Infinispan включает хорошо масштабируемую распределенную реализацию Apache Lucene Directory. Чтобы создать экземпляр каталога:
import org.apache.lucene.store.Directory;
import org.infinispan.lucene.directory.DirectoryBuilder;
import org.infinispan.Cache;
Cache cache = // create an Infinispan cache, configured as you like
Directory indexDir = DirectoryBuilder.newDirectoryInstance(cache, cache, cache, indexName)
.create();
IndexName - это уникальный ключ для идентификации вашего индекса. Он играет ту же роль, что и путь к индексам на основе файловой системы: вы можете создать несколько разных индексов, дав им разные имена. Когда вы используете одно и то же indexName в другом экземпляре, подключенном к той же сети (или создан на том же компьютере, что полезно для тестирования), они объединятся, сформируют кластер и поделятся всем контентом. Использование другого indexName позволяет хранить разные индексы в одном и том же наборе кэшей.
В этом примере кеш пропускается три раза, так как для быстрой демонстрации это нормально, но, как подсказывает API, рекомендуется настроить каждый кеш отдельно, так как они будут использоваться по-разному. Более подробная информация представлена ниже.
Новые узлы могут быть добавлены или удалены динамически, что делает администрирование сервиса очень простым и также подходит для облачных сред: просто реагировать на скачки нагрузки, так как добавление дополнительной памяти и мощности ЦП в поисковую систему выполняется простым запуском большего количества узлов.
Для получения подробной информации обратитесь к документации и справочнику по API.