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í.
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 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; }}