Example usage for org.apache.lucene.search.highlight Encoder encodeText

List of usage examples for org.apache.lucene.search.highlight Encoder encodeText

Introduction

In this page you can find the example usage for org.apache.lucene.search.highlight Encoder encodeText.

Prototype

String encodeText(String originalText);

Source Link

Usage

From source file:com.o19s.solr.swan.highlight.BaseFragmentsBuilder.java

License:Apache License

protected String makeFragment(StringBuilder buffer, int[] index, Field[] values, WeightedFragInfo fragInfo,
        String[] preTags, String[] postTags, Encoder encoder) {
    StringBuilder fragment = new StringBuilder();
    final int s = fragInfo.getStartOffset();
    int[] modifiedStartOffset = { s };
    String src = getFragmentSourceMSO(buffer, index, values, s, fragInfo.getEndOffset(), modifiedStartOffset);
    int srcIndex = 0;
    for (SubInfo subInfo : fragInfo.getSubInfos()) {
        for (Toffs to : subInfo.getTermsOffsets()) {
            fragment.append(//from ww  w.  ja va  2  s  . c o m
                    encoder.encodeText(src.substring(srcIndex, to.getStartOffset() - modifiedStartOffset[0])))
                    .append(getPreTag(preTags, subInfo.getSeqnum()))
                    .append(encoder.encodeText(src.substring(to.getStartOffset() - modifiedStartOffset[0],
                            to.getEndOffset() - modifiedStartOffset[0])))
                    .append(getPostTag(postTags, subInfo.getSeqnum()));
            srcIndex = to.getEndOffset() - modifiedStartOffset[0];
        }
    }
    fragment.append(encoder.encodeText(src.substring(srcIndex)));
    return fragment.toString();
}

From source file:com.o19s.solr.swan.highlight.SwanHighlighter.java

License:Apache License

private void alternateField(NamedList docSummaries, SolrParams params, Document doc, String fieldName) {
    String alternateField = params.getFieldParam(fieldName, HighlightParams.ALTERNATE_FIELD);
    if (alternateField != null && alternateField.length() > 0) {
        IndexableField[] docFields = doc.getFields(alternateField);
        List<String> listFields = new ArrayList<String>();
        for (IndexableField field : docFields) {
            if (field.binaryValue() == null)
                listFields.add(field.stringValue());
        }/*from  w ww .  j av  a  2s  .  co  m*/

        String[] altTexts = listFields.toArray(new String[listFields.size()]);

        if (altTexts != null && altTexts.length > 0) {
            Encoder encoder = getEncoder(fieldName, params);
            int alternateFieldLen = params.getFieldInt(fieldName, HighlightParams.ALTERNATE_FIELD_LENGTH, 0);
            List<String> altList = new ArrayList<String>();
            int len = 0;
            for (String altText : altTexts) {
                if (alternateFieldLen <= 0) {
                    altList.add(encoder.encodeText(altText));
                } else {
                    altList.add(len + altText.length() > alternateFieldLen
                            ? encoder.encodeText(altText.substring(0, alternateFieldLen - len))
                            : encoder.encodeText(altText));
                    len += altText.length();
                    if (len >= alternateFieldLen)
                        break;
                }
            }
            docSummaries.add(fieldName, altList);
        }
    }
}

From source file:com.o19s.solr.swan.highlight.WordHashFragmentsBuilder.java

License:Apache License

/**
 * Use an alternate pre and post tag method, based on the word being highlighted.  In this way
 * each time the same phrase is highlighted in the same css class always.
 * @return/*  w  ww  . ja v a2s  .c om*/
 */
@Override
protected String makeFragment(StringBuilder buffer, int[] index, Field[] values,
        FieldFragList.WeightedFragInfo fragInfo, String[] preTags, String[] postTags, Encoder encoder) {
    StringBuilder fragment = new StringBuilder();
    String term;
    final int s = fragInfo.getStartOffset();
    int[] modifiedStartOffset = { s };
    String src = getFragmentSourceMSO(buffer, index, values, s, fragInfo.getEndOffset(), modifiedStartOffset);
    int srcIndex = 0;
    for (WeightedFragInfo.SubInfo subInfo : fragInfo.getSubInfos()) {
        for (FieldPhraseList.WeightedPhraseInfo.Toffs to : subInfo.getTermsOffsets()) {
            term = encoder.encodeText(src.substring(to.getStartOffset() - modifiedStartOffset[0],
                    to.getEndOffset() - modifiedStartOffset[0]));
            fragment.append(
                    encoder.encodeText(src.substring(srcIndex, to.getStartOffset() - modifiedStartOffset[0])))
                    .append(highlightTerm(term));
            srcIndex = to.getEndOffset() - modifiedStartOffset[0];
        }
    }
    fragment.append(encoder.encodeText(src.substring(srcIndex)));
    return fragment.toString();
}

From source file:org.apache.solr.handler.component.AlfrescoSolrHighlighter.java

License:Open Source License

/**
 * Returns the alternate highlight object for this field -- a String[] by
 * default. Null if none.//from   w  w w  .j av a2s. c o  m
 */
@SuppressWarnings("unchecked")
protected Object alternateField(Document doc, String fieldName, SolrQueryRequest req) {
    SolrParams params = req.getParams();
    String alternateField = params.getFieldParam(fieldName, HighlightParams.ALTERNATE_FIELD);

    if (alternateField == null || alternateField.length() == 0) {
        return null;
    }
    alternateField = AlfrescoSolrDataModel.getInstance().mapProperty(fieldName, FieldUse.HIGHLIGHT, req);
    IndexableField[] docFields = doc.getFields(alternateField);
    if (docFields.length == 0) {
        // The alternate field did not exist, treat the original field as
        // fallback instead
        docFields = doc.getFields(fieldName);
    }
    List<String> listFields = new ArrayList<>();
    for (IndexableField field : docFields) {
        if (field.binaryValue() == null)
            listFields.add(field.stringValue());
    }

    if (listFields.isEmpty()) {
        return null;
    }
    String[] altTexts = listFields.toArray(new String[listFields.size()]);

    Encoder encoder = getEncoder(fieldName, params);
    int alternateFieldLen = params.getFieldInt(fieldName, HighlightParams.ALTERNATE_FIELD_LENGTH, 0);
    List<String> altList = new ArrayList<>();
    int len = 0;
    for (String altText : altTexts) {
        if (alternateFieldLen <= 0) {
            altList.add(encoder.encodeText(altText));
        } else {
            // note: seemingly redundant new String(...) releases memory to
            // the larger text. But is copying better?
            altList.add(len + altText.length() > alternateFieldLen
                    ? encoder.encodeText(altText.substring(0, alternateFieldLen - len))
                    : encoder.encodeText(altText));
            len += altText.length();
            if (len >= alternateFieldLen)
                break;
        }
    }
    return altList;
}

From source file:org.apache.solr.highlight.DefaultSolrHighlighter.java

License:Apache License

private void alternateField(NamedList docSummaries, SolrParams params, Document doc, String fieldName) {
    String alternateField = params.getFieldParam(fieldName, HighlightParams.ALTERNATE_FIELD);
    if (alternateField != null && alternateField.length() > 0) {
        IndexableField[] docFields = doc.getFields(alternateField);
        List<String> listFields = new ArrayList<String>();
        for (IndexableField field : docFields) {
            if (field.binaryValue() == null)
                listFields.add(field.stringValue());
        }/* ww w  .  j  a v  a 2s.c  om*/

        String[] altTexts = listFields.toArray(new String[listFields.size()]);

        if (altTexts != null && altTexts.length > 0) {
            Encoder encoder = getEncoder(fieldName, params);
            int alternateFieldLen = params.getFieldInt(fieldName, HighlightParams.ALTERNATE_FIELD_LENGTH, 0);
            List<String> altList = new ArrayList<String>();
            int len = 0;
            for (String altText : altTexts) {
                if (alternateFieldLen <= 0) {
                    altList.add(encoder.encodeText(altText));
                } else {
                    altList.add(len + altText.length() > alternateFieldLen
                            ? encoder.encodeText(new String(altText.substring(0, alternateFieldLen - len)))
                            : encoder.encodeText(altText));
                    len += altText.length();
                    if (len >= alternateFieldLen)
                        break;
                }
            }
            docSummaries.add(fieldName, altList);
        }
    }
}