SOLR Запоминание запроса для большого количества строк - PullRequest
1 голос
/ 02 апреля 2012

SOLR, похоже, выдает ошибку нехватки памяти, если я укажу num rows = Integer.MAX_VALUE.

Это имеет смысл для большого набора данных, но в моем случае запрос, который я выполняю, имеет только один результат. Тогда я предполагаю, что независимо от того, насколько велик параметр «num row», который я отправляю, сервер должен иметь возможность обрабатывать запрос (поскольку в возвращаемом наборе данных есть только один результат).

Как SOLR использует параметр "количество строк" в качестве входных данных? SOLR пытается предварительно выделить память перед запуском запроса?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

В Solr 3.5 SolrIndexSearcher заменяет количество документов, запрошенных maxDoc () в случае переполнения, поэтому этого не должно происходить.

Если Solr фактически пытается выделить Integer.MAX_VALUE записей, то это распределение, вероятно, в трассировке стека OOM.Вы должны проверить:

  • какой метод SolrIndexSearcher используется,
  • , проверяет ли исходный код SolrIndexSearcher для вашей версии Solr тестирование количества запрашиваемых документов так же, как Solr 3.5.
1 голос
/ 03 апреля 2012

Никогда не указывайте строки = Integer.MAX_VALUE.Извлекайте данные на страницах и устанавливайте разумный размер для строк.

Если Solr когда-либо возвращал миллионы строк, могут произойти всевозможные плохие вещи из памяти клиента, когда тайм-ауты считываются, пока он вычисляет ихс последующими повторными попытками и т. д.

Возможно, вы захотите сообщить об этом, но по сути это плохое поведение при неправильном вводе.

...