Creating your own Suggestion Analyzer
Esta página aún no está disponible en tu idioma.
To create your own Suggestion Analyzer must create a new class that implements Suggestion interface:
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;}We suggest create the new class into the package com.openkm.form.suggestion.
Methods description
Section titled “Methods description”| Method | Type | Description |
|---|---|---|
| getSuggestions(String nodeUuid, String nodePath, Select sel) | List |
Return a list of suggested words to tag the document. The method need the document uuid ( nodeUuid ) and the document path ( nodePath ). Select can be used as a collection of possible values ( enclosed dictionary ). |
Example of Suggestion Analyzer
Section titled “ Example of Suggestion Analyzer”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; }}