2014-12-23 3 views
1

Я использую solr вместе с tomcat как сервлет. Я установил solr для использования только одного ядра и определил DIH для импорта документов по строкам из таблиц mysql. Все в порядке и работает хорошо. документы индексируются правильно, и я могу искать среди них.Solr - Запуск из памяти кучи во время выполнения spellcheck.build

Проблема заключается в том, что я пытаюсь использовать модуль Suggester но у меня есть проблема здание, что все это нужно строить в первый раз, используя URL-адрес, как это:

http://user:[email protected]:port/solr/corename/suggest?q=whatever&spellcheck.build=true 

я оставил одну важную информация: импортируемые данные составляют 4,7 миллиона записей прямо сейчас.

Сначала он не мог событие построить проверки орфографии словаря (если это то, что это здание) за 1 миллион документов, потому что JVM будет запускать из памяти кучи со следующим сообщением:

java.lang.OutOfMemoryError: GC overhead limit exceededjava.lang.RuntimeException: 
java.lang.OutOfMemoryError: GC overhead limit exceeded at 
org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:793) at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:434) at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207) at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at 

поэтому я постепенно увеличил память кучи, и сейчас это около 2 ГБ, что, я думаю, много.

Конечно, очевидное решение состоит в том, чтобы снова увеличить память кучи java, но я блуждаю, если есть способ разделить и покорить процесс построения словаря? Или любое другое решение в этом отношении.

Большое спасибо

ответ

0

1) Параметр, который может иметь большое влияние на размер индекса проверка орфографии «thresholdTokenFrequency». Добавление следующего параметра конфигурации SpellCheckComponent может быть средством:

<float name="thresholdTokenFrequency">.01</float> 

2) Если данные в вашем поле орфографии копируется из различных других областей, вы можете попробовать настройки различных SpellCheckComponents, работающие на отдельно полях каждого.

Не пробовал это, и я боюсь, что слияние результатов с различными компонентами SpellCheckComponents может быть довольно сложным.

+0

Не работает. Спасибо anyways –

0

Solr нуждается в большой памяти при построении индексов, таких как spellcheck - index.

Причина, по которой это не способ поставить все больше памяти на машину.

У меня была равная проблема и выяснилось, что увеличение виртуальной памяти решит проблему. Вы можете использовать ulimit -v для отображения текущего состояния виртуальной памяти. В моем случае это было 14GByte для индекса 5GByte, чего не хватило войны (10 миллионов документов)

Итак, я положил ulimit -v unlimited в начало стартового сценария tomcat. Это решило проблему для меня.

+0

К сожалению, это не сработало для меня :( –

Смежные вопросы