Pārlūkot izejas kodu

only add highlighted fragments that have a score > 0 (when ending up using the default highlighter)

kimchy 14 gadi atpakaļ
vecāks
revīzija
7fa5b0cb57

+ 5 - 3
modules/elasticsearch/src/main/java/org/elasticsearch/search/highlight/HighlightPhase.java

@@ -35,14 +35,12 @@ import org.elasticsearch.common.io.FastStringReader;
 import org.elasticsearch.common.lucene.document.SingleFieldSelector;
 import org.elasticsearch.index.mapper.DocumentMapper;
 import org.elasticsearch.index.mapper.FieldMapper;
-import org.elasticsearch.index.mapper.Uid;
 import org.elasticsearch.search.SearchException;
 import org.elasticsearch.search.SearchParseElement;
 import org.elasticsearch.search.fetch.FetchPhaseExecutionException;
 import org.elasticsearch.search.fetch.SearchHitPhase;
 import org.elasticsearch.search.highlight.vectorhighlight.SourceScoreOrderFragmentsBuilder;
 import org.elasticsearch.search.highlight.vectorhighlight.SourceSimpleFragmentsBuilder;
-import org.elasticsearch.search.internal.InternalSearchHit;
 import org.elasticsearch.search.internal.SearchContext;
 import org.elasticsearch.search.lookup.SearchLookup;
 
@@ -128,7 +126,11 @@ public class HighlightPhase implements SearchHitPhase {
                             Analyzer analyzer = context.mapperService().documentMapper(hitContext.hit().type()).mappers().indexAnalyzer();
                             TokenStream tokenStream = analyzer.reusableTokenStream(mapper.names().indexName(), new FastStringReader(text));
                             TextFragment[] bestTextFragments = highlighter.getBestTextFragments(tokenStream, text, false, field.numberOfFragments());
-                            Collections.addAll(fragsList, bestTextFragments);
+                            for (TextFragment bestTextFragment : bestTextFragments) {
+                                if (bestTextFragment != null && bestTextFragment.getScore() > 0) {
+                                    fragsList.add(bestTextFragment);
+                                }
+                            }
                         }
                     } catch (Exception e) {
                         throw new FetchPhaseExecutionException(context, "Failed to highlight field [" + field.field() + "]", e);