Solr 1.4 Enterprise Search Server рекомендует делать большие обновления на копии ядра и затем заменять его на основное ядро. Я выполняю следующие действия:
- Создать ядро подготовки: http://localhost:8983/solr/admin/cores?action=CREATE&name=prep&instanceDir=main
- Выполните обновление индекса, затем выполните фиксацию/оптимизацию на ядре подготовки.
- Подменю основного и подготовительного ядра: http://localhost:8983/solr/admin/cores?action=SWAP&core=main&other=prep
- Выгрузить ядро подготовки: http://localhost:8983/solr/admin/cores?action=UNLOAD&core=prep
Проблема, с которой я столкнулась, - это то, что ядро, созданное на шаге 1, не содержит никаких данных. Если я собираюсь сделать полный индекс всего и кухонную раковину, это будет хорошо, но если я просто хочу обновить (большое) подмножество документов - это, очевидно, не сработает.
(я мог бы объединить ядра, но часть того, что я пытаюсь сделать, это избавиться от любых удаленных документов, не пытаясь составить их список.)
Есть ли какой-нибудь флаг для действия CREATE, которое мне не хватает? Страница Страница Solr Wiki для CoreAdmin немного редка.
Возможное решение: репликация
Кто-то из solr-пользователя предложил использовать репликацию. Чтобы использовать его в этом сценарии, мне (по моему мнению) потребуется выполнить следующие шаги:
- Создайте новое ядро PREP, основанное на конфигурации основного ядра
- Измените конфигурацию основного ядра как главного
- Измените конфигурацию ядра PREP как подчиненного
- Причина/ожидание синхронизации?
- измените конфигурацию ядра PREP, чтобы больше не быть подчиненным
- Выполните обновление индекса, а затем зафиксируйте/оптимизируйте его в ядре PREP.
- Сменить PREP и MAIN ядра
Простейшей установкой на основе репликации было бы настроить постоянное ядро PREP, которое всегда является ведущим. Главное ядро (на как можно большем количестве серверов) могло бы быть подчиненным ядром PREP. Индексация может происходить в ядре PREP как можно быстрее или медленнее.
Возможное решение: постоянное ядро PREP и двойное обновление
Еще одна идея, которую я придумал, заключалась в этом (также с участием постоянного ядра PREP):
- Выполните обновление индекса, а затем зафиксируйте/оптимизируйте его в ядре PREP.
- Сменить PREP и MAIN ядра.
- Повторите обновление индекса, а затем зафиксируйте/оптимизируйте то, что теперь является ядром PREP. Теперь он имеет те же данные, что и MAIN core (теоретически), и будет готов к следующей операции индекса.