Crear su propio 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;}Le sugerimos crear la nueva clase dentro del paquete com.openkm.form.suggestion.
Descripción de los métodos
Sección titulada «Descripción de los métodos»| 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). |
Ejemplo de analizador de sugerencias
Sección titulada «Ejemplo de analizador de sugerencias»package com.openkm.form.suggestion;
import java.io.IOException;import java.util.ArrayList;import java.util.List;
import org.slf4j.Logger;import org.slf4j.LoggerFactory;
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.NodeDocumentVersionDAO;import com.openkm.dao.SearchDAO;import com.openkm.dao.bean.NodeDocument;import com.openkm.dao.bean.NodeDocumentVersion;import com.openkm.extractor.TextExtractorWork;
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().isValid(nodeUuid)) { // Get text extraction if (!NodeDocumentDAO.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());
// Execute extractor NodeDocumentDAO.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; }}