Я прочитал следующее:
http://wiki.apache.org/solr/SolrPerformanceFactors
http://wiki.apache.org/solr/SolrCaching
http://www.lucidimagination.com/content/scaling-lucene-and-solr
И у меня есть вопросы по нескольким вещам:
- Если я использую опцию JVM
-XX:+UseCompressedStrings
, какой экономии памяти я могу достичь? Для простого примера, если у меня есть 1 индексированное поле (строка) и 1 хранимое поле (строка) с omitNorms=true и omitTf=true, какой экономии в индексе и кэше документов я могу ожидать? Я предполагаю около 50%, но, возможно, это слишком оптимистично.
- Когда именно работает кэш фильтров Solr? Если я просто делаю простой запрос с AND и несколькими OR, и сортирую по баллам, нужен ли он мне вообще?
- Если я хочу кэшировать все документы в кэше документов, как мне рассчитать необходимое пространство? Используя пример выше, если у меня 20M документов, я использую сжатые строки, и средняя длина хранимого поля составляет 25 символов, то требуемое пространство в основном (25 байт + small_admin_overhead) * 20M?
- Если все документы находятся в кэше документов, насколько важен кэш запросов?
- Если я хочу автоматически помещать каждый документ в кэш документов, будет ли это делать autowarm query of
*:*
?
- В статье scaling-lucene-and-solr говорится, что FuzzyQuery медленный. Если я использую функцию проверки орфографии в solr, то я, по сути, использую нечеткий запрос, правильно (потому что проверка орфографии делает тот же расчет расстояния редактирования)? Таким образом, предполагается, что проверка орфографии и нечеткий запрос одинаково "медленные"?
- Раздел, описывающий кэш полей lucene для строк, немного запутан. Правильно ли я понимаю, что требуемое пространство в основном равно размеру индексируемого поля строки + целое число arry, равное количеству уникальных терминов в этом поле?
- Наконец, в разделе "Максимизация пропускной способности" есть заявление о том, что нужно оставить достаточно места для дискового кэша ОС. Там говорится: "В целом, для крупномасштабного индекса лучше всего убедиться, что у вас есть хотя бы несколько гигабайт оперативной памяти сверх того, что вы отдаете JVM". Значит, если у меня машина с 12 ГБ памяти (как пример), я должен отдать ОС по крайней мере 2-3 ГБ? Могу ли я оценить объем дискового кэша, необходимый ОС, глядя на размер дискового индекса?
задан yura 23 August 2012 в 09:20
поделиться