Ir al contenido
Otras versiones

Cargando…

Crear su propio analizador de sugerencias (Suggestion Analyzer)

Para crear su propio analizador de sugerencias (Suggestion Analyzer) debe crear una nueva clase que implemente la interfaz Suggestion:

package com.openkm.form.suggestion;
import java.util.List;
import com.openkm.bean.form.Select;
import com.openkm.core.DatabaseException;
import com.openkm.core.PathNotFoundException;
public interface Suggestion {
List<String> getSuggestions(String nodeUuid, String nodePath, Select sel) throws PathNotFoundException, SuggestionException, DatabaseException;
}

La nueva clase debe cargarse en el paquete com.openkm.form.suggestion, porque el sistema de plugins de la aplicación intentará cargarla desde ahí.

Método Tipo Descripción
getSuggestions(String nodeUuid, String nodePath, Select sel) List Devuelve una lista de palabras sugeridas para etiquetar el documento.
El método necesita el uuid del documento ( nodeUuid ) y la ruta del documento ( nodePath ).
Select puede utilizarse como una colección de valores posibles (diccionario cerrado).
package com.openkm.form.suggestion;
import com.openkm.bean.form.Option;
import com.openkm.bean.form.Select;
import com.openkm.core.DatabaseException;
import com.openkm.core.PathNotFoundException;
import com.openkm.dao.NodeDocumentDAO;
import com.openkm.dao.NodeDocumentUtilsDAO;
import com.openkm.dao.NodeDocumentVersionDAO;
import com.openkm.dao.SearchDAO;
import com.openkm.dao.bean.NodeDocument;
import com.openkm.dao.bean.NodeDocumentVersion;
import com.openkm.extractor.TextExtractorWork;
import com.openkm.spring.PrincipalUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DocumentTermsSuggestion implements Suggestion {
private static Logger log = LoggerFactory.getLogger(DocumentTermsSuggestion.class);
@Override
public List<String> getSuggestions(String nodeUuid, String nodePath, Select sel) throws PathNotFoundException, SuggestionException,
DatabaseException {
log.debug("getSuggestions({}, {}, {})", new Object[] { nodeUuid, nodePath, sel });
List<String> list = new ArrayList<String>();
try {
if (NodeDocumentDAO.getInstance().itemExists(nodeUuid)) {
// Get text extraction
if (!NodeDocumentUtilsDAO.getInstance().isTextExtracted(nodeUuid)) {
// Force text extraction
NodeDocumentVersion nDocVer = NodeDocumentVersionDAO.getInstance().findCurrentVersion(nodeUuid);
TextExtractorWork tew = new TextExtractorWork();
tew.setDocUuid(nodeUuid);
tew.setDocPath(nodePath);
tew.setDocVerUuid(nDocVer.getUuid());
tew.setTenant(PrincipalUtils.getTenantId());
// Execute extractor
NodeDocumentUtilsDAO.getInstance().textExtractorHelper(tew);
}
for (String term : SearchDAO.getInstance().getTerms(NodeDocument.class, nodeUuid)) {
for (Option opt : sel.getOptions()) {
if (term.equals(opt.getLabel().toLowerCase())) {
if (!list.contains(opt.getValue())) {
list.add(opt.getValue());
break;
}
}
}
}
}
} catch (IOException e) {
throw new SuggestionException("IOException: " + e.getMessage(), e);
}
return list;
}
}