Saturday, September 28, 2013

TikaBaseDocumentBuilder - LuceneDocumentBuilder - OBAMA Let's get it Done...


"Na falta de um simbolo abstrato legal em vez duma caixa pentelha. Use qualquer um, quem for fazer inspecao, pelo da uma risadinha antes... ;-)" - Doutor Colgate...
/**
 * example usage of the configurator pattern. E Lucene nao eh banco de dados, eh banco de indice.
 * os dados ficam no banco ou nao, pode ser o sistema de arquivos. mas nao ficam no lucene.
 * Lucene eh Bussieness Inteligence e serviço de macaco eh ficar pulando feito um idiota. e nao         tocar instrumento nenhum.
    as usual need to finish..
    TODO: Finish You IDIOT, or i KILL YOU.
 * Mouse Bussiness eh coisa seria.. ;-)
**/
package org.nanotek.lucene.tika;



public class TikaBaseDocumentBuilder<S extends TikaInputStream> implements LuceneDocumentBuilder<S> , DocumentTransformer<S,Document>{

private Tika tika;
private String textFieldName = "TextData";
private Configurator<C,P,Document> configurator;

public TikaBaseDocumentBuilder() {
initTika();
}

@Override
public Document buildDocument(S source) throws DocumentBuilderException {
return transform(source);
}

private void initTika() {
tika = new Tika();
}


public Tika getTika() {
return tika;
}

public void setTika(Tika tika) {
this.tika = tika;
}

public String getTextFieldName() {
return textFieldName;
}

public void setTextFieldName(String textFieldName) {
this.textFieldName = textFieldName;
}

@Override
public Document transform(S source) throws TransformerException {
Document document = null;
String txtExtracted;
if (tika == null)
initTika();
try {
txtExtracted = tika.parseToString(source);
document = new Document();
Field fileLocationField = new TextField("file_location", source.toString() , Field.Store.YES); //$NON-NLS-1$ //$NON-NLS-2$
document.add(fileLocationField);
Field wordField = new TextField(textFieldName, txtExtracted, Field.Store.YES); //$NON-NLS-1$ //$NON-NLS-2$
document.add(wordField);
Field modifiedField = new LongField("modified" , new Date().getTime() , Field.Store.YES); //$NON-NLS-1$
document.add(modifiedField);
} catch (IOException | TikaException e) {
throw new TransformerException(e);
}
return document;
}

}