Прямо сейчас мои документы в lucene могут иметь очень очень большие значения в одном поле (от 0 до сотен МБ).
Я использую Lucene 3.1.0, я создаю такие документы:
doc = new Document();
Field field = new Field(fieldname, VERYLARGEVALUE, store, tokenize, storevector);
doc.add(field);
Где VERYLARGEVALUE - строка в памяти. Я думаю, что, возможно, записывает VERYLARGEVALUE в файл во время его создания (он создается путем извлечения текста из ряда источников, поэтому он является инкрементным), а затем с помощью:
Field field = Field(String name, Reader reader, Field.TermVector termVector);
doc.add(field);
Где читатель читает из файла, в который я написал VERYLARGEVALUE.
Это уменьшит требование к памяти, или VERYLARGEVALUE рано или поздно будет считан в память?