Example usage for org.apache.solr.common.params HighlightParams ALTERNATE_FIELD

List of usage examples for org.apache.solr.common.params HighlightParams ALTERNATE_FIELD

Introduction

In this page you can find the example usage for org.apache.solr.common.params HighlightParams ALTERNATE_FIELD.

Prototype

String ALTERNATE_FIELD

To view the source code for org.apache.solr.common.params HighlightParams ALTERNATE_FIELD.

Click Source Link

Usage

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());
        }/* w ww .j  ava  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(altText.substring(0, alternateFieldLen - len))
                            : encoder.encodeText(altText));
                    len += altText.length();
                    if (len >= alternateFieldLen)
                        break;
                }
            }
            docSummaries.add(fieldName, altList);
        }
    }
}