Search in sources :

Example 1 with GxSilentTrnSdt

use of com.genexus.GxSilentTrnSdt in project JavaClasses by genexuslabs.

the class DocumentHandler method htmlPreview.

public static String htmlPreview(Object obj, String query, String textType, String preTag, String postTag, int fragmentSize, int maxNumFragments) {
    String text;
    try {
        if (obj instanceof GxSilentTrnSdt) {
            text = ((GxSilentTrnSdt) obj).getTransaction().toString();
        } else if (obj instanceof GXFile) {
            GXFile file = (GXFile) obj;
            text = DocumentHandler.getText(file.getAbsoluteName(), file.getExt());
        } else if (textType.toLowerCase().startsWith("htm")) {
            text = new JTidyHTMLHandler().getTextFromString(obj.toString());
        } else {
            text = obj.toString();
        }
        if (!query.equals("") && !text.equals("")) {
            QueryParser qp = new QueryParser(IndexRecord.CONTENTFIELD, Indexer.CreateAnalyzer());
            qp.setDefaultOperator(QueryParser.Operator.AND);
            Query unReWrittenQuery = qp.parse(query);
            Query q = unReWrittenQuery;
            try {
                if (reader == null) {
                    reader = Indexer.getReader();
                }
                if (queries.get(query) != null) {
                    q = (Query) queries.get(query);
                } else {
                    // required to expand search terms (for the usage of
                    q = unReWrittenQuery.rewrite(reader);
                    // highlighting with wildcards)
                    if (queries.size() == Integer.MAX_VALUE) {
                        queries.clear();
                    }
                    queries.put(query, q);
                }
            } catch (Exception ex) {
            }
            QueryScorer scorer = new QueryScorer(q);
            SimpleHTMLFormatter formatter = new SimpleHTMLFormatter(preTag, postTag);
            Highlighter highlighter = new Highlighter(formatter, scorer);
            Fragmenter fragmenter = new SimpleFragmenter(fragmentSize);
            highlighter.setTextFragmenter(fragmenter);
            TokenStream tokenStream = Indexer.CreateAnalyzer().tokenStream(IndexRecord.CONTENTFIELD, new StringReader(text));
            String result = highlighter.getBestFragments(tokenStream, text, maxNumFragments, "...");
            return result;
        } else {
            return text;
        }
    } catch (Exception ex) {
        System.out.println(ex.getMessage());
        ex.printStackTrace();
        return "";
    }
}
Also used : TokenStream(org.apache.lucene.analysis.TokenStream) Query(org.apache.lucene.search.Query) QueryScorer(org.apache.lucene.search.highlight.QueryScorer) GXFile(com.genexus.util.GXFile) GxSilentTrnSdt(com.genexus.GxSilentTrnSdt) FileNotFoundException(java.io.FileNotFoundException) QueryParser(org.apache.lucene.queryParser.QueryParser) SimpleFragmenter(org.apache.lucene.search.highlight.SimpleFragmenter) Fragmenter(org.apache.lucene.search.highlight.Fragmenter) SimpleFragmenter(org.apache.lucene.search.highlight.SimpleFragmenter) StringReader(java.io.StringReader) SimpleHTMLFormatter(org.apache.lucene.search.highlight.SimpleHTMLFormatter) Highlighter(org.apache.lucene.search.highlight.Highlighter)

Example 2 with GxSilentTrnSdt

use of com.genexus.GxSilentTrnSdt in project JavaClasses by genexuslabs.

the class Indexer method getIndexRecord.

private IndexRecord getIndexRecord(Object obj, GXContentInfo contentInfo) {
    if (contentInfo == null)
        contentInfo = new GXContentInfo();
    IndexRecord ir = new IndexRecord();
    if (obj instanceof GXFile) {
        GXFile file = (GXFile) obj;
        ir.setUri(file.getAbsoluteName());
        ir.setContent(DocumentHandler.getText(file.getAbsoluteName(), file.getExt()).toLowerCase());
        ir.setEntity(contentInfo.getType() == null ? file.getClass().getName() : contentInfo.getType());
        ir.setTitle(contentInfo.getTitle() == null ? file.getName() : contentInfo.getTitle());
        ir.setViewer(contentInfo.getViewer() == null ? file.getName() : contentInfo.getViewer());
        ir.setKeys(contentInfo.getKeys() == null || contentInfo.getKeys().size() == 0 ? new Vector<String>() : contentInfo.getKeys());
    } else if (obj instanceof GxSilentTrnSdt) {
        IGxSilentTrn bc = ((GxSilentTrnSdt) obj).getTransaction();
        GXContentInfo info = bc.getContentInfo();
        ir.setUri(info.getId());
        ir.setContent(IndexRecord.processContent(bc.toString()));
        ir.setEntity(contentInfo.getType() == null ? info.getType() : contentInfo.getType());
        ir.setTitle(contentInfo.getTitle() == null ? info.getTitle() : contentInfo.getTitle());
        ir.setViewer(contentInfo.getViewer() == null ? info.getViewer() : contentInfo.getViewer());
        ir.setKeys(contentInfo.getKeys() == null || contentInfo.getKeys().size() == 0 ? info.getKeys() : contentInfo.getKeys());
    } else if (obj instanceof String) {
        ir.setUri(contentInfo.getId() == null ? "" : contentInfo.getId());
        ir.setContent(IndexRecord.processContent((String) obj));
        ir.setEntity(contentInfo.getType() == null ? "" : contentInfo.getType());
        ir.setTitle(contentInfo.getTitle() == null ? "" : contentInfo.getTitle());
        ir.setViewer(contentInfo.getViewer() == null ? "" : contentInfo.getViewer());
        ir.setKeys(contentInfo.getKeys() == null || contentInfo.getKeys().size() == 0 ? new Vector<String>() : contentInfo.getKeys());
    } else {
        ir = null;
    }
    return ir;
}
Also used : GXFile(com.genexus.util.GXFile) Vector(java.util.Vector) GxSilentTrnSdt(com.genexus.GxSilentTrnSdt) IGxSilentTrn(com.genexus.IGxSilentTrn)

Aggregations

GxSilentTrnSdt (com.genexus.GxSilentTrnSdt)2 GXFile (com.genexus.util.GXFile)2 IGxSilentTrn (com.genexus.IGxSilentTrn)1 FileNotFoundException (java.io.FileNotFoundException)1 StringReader (java.io.StringReader)1 Vector (java.util.Vector)1 TokenStream (org.apache.lucene.analysis.TokenStream)1 QueryParser (org.apache.lucene.queryParser.QueryParser)1 Query (org.apache.lucene.search.Query)1 Fragmenter (org.apache.lucene.search.highlight.Fragmenter)1 Highlighter (org.apache.lucene.search.highlight.Highlighter)1 QueryScorer (org.apache.lucene.search.highlight.QueryScorer)1 SimpleFragmenter (org.apache.lucene.search.highlight.SimpleFragmenter)1 SimpleHTMLFormatter (org.apache.lucene.search.highlight.SimpleHTMLFormatter)1