Как удалить логически удаленные документы из индекса Solr? - PullRequest
3 голосов
/ 16 июня 2010

Я внедряю Solr для свободного текстового поиска по проекту, в котором записи, доступные для поиска, необходимо будет добавлять и удалять в большом масштабе каждый день.

Из-за масштаба, который мне нужно сделать,убедитесь, что размер индекса соответствует.

В моей тестовой установке Solr я проиндексировал набор из 10 документов.Затем я внесу изменения в один из документов и хочу заменить документ с тем же идентификатором в индексе.Это работает правильно и ведет себя как ожидалось, когда я ищу.

Я использую этот код для обновления документа:

getSolrServer().deleteById(document.getIndexId());
getSolrServer().add(document.getSolrInputDocument());
getSolrServer().commit();

Я заметил, что когда я смотрю на страницу статистики длясервер Solr, что цифры не соответствуют ожиданиям.

После начального индекса numDocs и maxDocs равны 10, как и ожидалось.Однако когда я обновляю документ, numDocs по-прежнему равен 10 (ожидаемый), но maxDocs равен 11 (неожиданный).

При чтении документации я вижу, что

maxDoc может быть большепоскольку в число maxDoc входят логически удаленные документы, которые еще не были удалены из индекса.

Итак, вопрос в том, как удалить логически удаленные документы из индекса?

Если эти документы все еще существуют в индексе, могу ли я подвергнуться риску снижения производительности, если он выполняется с очень большим объемом документов?

Спасибо:)

1 Ответ

6 голосов
/ 16 июня 2010

Вы должны оптимизировать свой индекс .

Обратите внимание, что оптимизация является дорогой, вам, вероятно, не следует делать это чаще, чем ежедневно.

Вот еще немного информации по оптимизации:

http://www.lucidimagination.com/search/document/CDRG_ch06_6.3.1.3

http://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations

...