2011-05-26 6 views
13

¿Podría alguien ayudarme a solucionarlo?Apache Tika y límite de caracteres al analizar documentos

Se puede hacer como esto

Tika tika = new Tika(); 
    tika.setMaxStringLength(10*1024*1024); 

Pero si usted no utiliza Tika directamente como aquí:

ContentHandler textHandler = new BodyContentHandler(); 
Metadata metadata = new Metadata(); 
Parser parser = new AutoDetectParser(); 

ParseContext ps = new ParseContext(); 
for (InputStream is : getInputStreams()) { 
    parser.parse(is, textHandler, metadata, ps); 
    is.close(); 
    System.out.println("Title: " + metadata.get("title")); 
    System.out.println("Author: " + metadata.get("Author")); 
} 

No hay manera de ponerla en marcha, porque usted don' t interactúa con el WriteOutContentHandler. Por cierto, está configurado en -1 por defecto, lo que significa que no hay restricciones. Pero la restricción resultante es 100000 caracteres.

/** 
* The maximum number of characters to write to the character stream. 
* Set to -1 for no limit. 
*/ 
private final int writeLimit; 

/** 
* Number of characters written so far. 
*/ 
private int writeCount = 0; 

private WriteOutContentHandler(Writer writer, int writeLimit) { 
    this.writer = writer; 
    this.writeLimit = writeLimit; 
} 

/** 
* Creates a content handler that writes character events to 
* the given writer. 
* 
* @param writer writer 
*/ 
public WriteOutContentHandler(Writer writer) { 
    this(writer, -1); 
} 

Respuesta

31

Debe haber pasado por alto que el controlador de contenido tiene constructor con writelimit.

ContentHandler textHandler = new BodyContentHandler(int writeLimit); 
+0

OMG soy como un ..... gracias compinche – lisak

+1

#selfie .... :-) – bknopper

+4

en cuenta que es -1 caracteres ilimitadas! –

Cuestiones relacionadas