Это было давно, так что я не все помню, но начнем.
Проблема UTF8 encoding is longer than the max length 32766
, с которой я столкнулся, была вызвана установленным флагом. Это привело к тому, что вся строка вообще не анализировалась, и поэтому ElasticSearch рассматривал ее как один термин. Apache Lucene (движок под ElasticSearch) имеет значение 32766 как максимальную длину термина. Если вы дадите один термин длиннее этого, будет выдана эта ошибка.
Написание пользовательского анализируемого файла определенно могло бы решить проблему, но наличия дескриптора анализатора по умолчанию этого было достаточно для моего варианта использования. Установив определенный флаг (sort = false
) в нашем собственном коде, я смог снова включить анализатор по умолчанию для строки, которую я отправляю.
Другой опыт
Вы столкнетесь с ошибочными PDF-файлами. Много. Это вызовет проблемы с Apache Tika, такие как Zip bomb
ошибки. Они часто вызваны глубоко вложенным XML в PDF.
Также не стоит недооценивать количество PDF-файлов, созданных с помощью OCR. Хотя PDF-файл может нормально выглядеть, фактический текст может быть совершенно бессмысленным. Быстрый способ проверить это - просто скопировать текст из PDF в блокнот и проверить, правильно ли он.
Подготовьте для этого достаточно оперативной памяти. Некоторые отдельные документы могут иногда увеличивать использование ОЗУ программой на 1-2 ГБ. Я не знаю, сколько из этого было на самом деле в употреблении, а не только в ожидании GC
.
Выберите, какие файлы вы действительно хотите проанализировать. Например, для синтаксического анализа XML-файлов может быть бесполезно.
Сканирование большего количества документов занимает много времени. Возможно, лучше всего разделить процесс на обновление и индексацию. Таким образом, вы можете ограничить количество документов, сканируемых в день, проверив, был ли документ уже проиндексирован. Если нет, проиндексируйте его. Если он изменился, обновите его. Я обнаружил, что в нашем случае сканирование ~ 80000 документов заняло около 4 часов. Это было сделано с помощью одного процессора и около 2 ГБ оперативной памяти.
Надеюсь, это помогло хоть немного.
person
randyr
schedule
22.02.2017