Несколько IndexReader / Writers в одном процессе (Lucene) - PullRequest
0 голосов
/ 23 октября 2010

Мы поддерживаем индекс Lucene, который содержит около 20 мм документов. Природа поисковых запросов такова, что индексирование и запросы могут быть легко разделены между различными индексами.

Для достижения этой цели нам необходимо хранить в памяти многие (потенциально тысячи) IndexWriters или IndexReaders / Searchers для обработки индексации и запросов к каждому из этих индексов (запросы не охватывают несколько индексов).

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

Ответы [ 2 ]

3 голосов
/ 23 октября 2010

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

При этом накладные расходы памяти на индекс очень малы (по замыслу)Я думаю, что это что-то вроде одного байта на документ, а затем число уникальных терминов, разделенное на 256.

0 голосов
/ 21 мая 2011

Я хотел бы знать, как часто вы обновляете индекс, есть ли требование в реальном времени? Если вы используете проект java lucene, то, вероятно, вы можете заглянуть в этот проект с открытым исходным кодом, в котором Linked-In породил некоторую внутреннюю работу. http://sna -projects.com / Zoie /

Поскольку поиск в памяти зависит от того, сортируете ли вы результаты по значению проиндексированных полей. В этом случае кэш-память поля, которая является внутренним средством lucene, в некоторых ситуациях будет создавать нагрузку на память.

Надеюсь, это поможет.

...