/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.util; import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.LinkedList; import java.util.ArrayList; import java.util.ListIterator; import org.apache.solr.common.params.DefaultSolrParams; import org.apache.solr.common.params.HighlightParams; import org.apache.solr.common.params.MapSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.request.*; import org.apache.solr.search.DocIterator; import org.apache.solr.search.DocList; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.schema.SchemaField; import org.apache.solr.highlight.SolrHighlighter; import org.apache.solr.highlight.DefaultSolrHighlighter; import org.apache.lucene.analysis.*; import org.apache.lucene.document.Document; import org.apache.lucene.search.Query; import org.apache.lucene.search.highlight.*; /** * DEPRECATED Collection of Utility and Factory methods for Highlighting. * * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter */ public class HighlightingUtils implements HighlightParams { static SolrParams DEFAULTS = null; static { Map<String,String> map = new HashMap<String,String>(); map.put(SNIPPETS, "1"); map.put(FRAGSIZE, "100"); map.put(FORMATTER, SIMPLE); map.put(SIMPLE_PRE, "<em>"); map.put(SIMPLE_POST, "</em>"); DEFAULTS = new MapSolrParams(map); } private static SolrHighlighterX HIGHLIGHTER = new SolrHighlighterX(); /** Combine request parameters with highlighting defaults. */ static SolrParams getParams(SolrQueryRequest request) { return new DefaultSolrParams(request.getParams(), DEFAULTS); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter#isHighlightingEnabled */ public static boolean isHighlightingEnabled(SolrQueryRequest request) { return HIGHLIGHTER.isHighlightingEnabled(getParams(request)); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter */ public static Highlighter getHighlighter(Query query, String fieldName, SolrQueryRequest request) { return HIGHLIGHTER.getHighlighterX(query, fieldName, request); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter#getHighlightFields */ public static String[] getHighlightFields(Query query, SolrQueryRequest request, String[] defaultFields) { return HIGHLIGHTER.getHighlightFields(query, request, defaultFields); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter */ public static int getMaxSnippets(String fieldName, SolrQueryRequest request) { return HIGHLIGHTER.getMaxSnippetsX(fieldName, request); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter */ public static Formatter getFormatter(String fieldName, SolrQueryRequest request) { return HIGHLIGHTER.getFormatterX(fieldName, request); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter */ public static Fragmenter getFragmenter(String fieldName, SolrQueryRequest request) { return HIGHLIGHTER.getFragmenterX(fieldName, request); } /** * @deprecated use DefaultSolrHighlighter * @see DefaultSolrHighlighter#doHighlighting */ @SuppressWarnings("unchecked") public static NamedList doHighlighting(DocList docs, Query query, SolrQueryRequest req, String[] defaultFields) throws IOException { return HIGHLIGHTER.doHighlighting(docs, query, req, defaultFields); } } /** * subclass containing package protected versions of some protected methods, used for proxying calls to deprecated methods that have been moved and made protected. */ class SolrHighlighterX extends DefaultSolrHighlighter { Highlighter getHighlighterX(Query query, String fieldName, SolrQueryRequest request) { return getHighlighter(query, fieldName, request); } int getMaxSnippetsX(String fieldName, SolrQueryRequest request) { return getMaxSnippets(fieldName, HighlightingUtils.getParams(request)); } Formatter getFormatterX(String fieldName, SolrQueryRequest request) { return getFormatter(fieldName, HighlightingUtils.getParams(request)); } Fragmenter getFragmenterX(String fieldName, SolrQueryRequest request) { return getFragmenter(fieldName, HighlightingUtils.getParams(request)); } }