@@ -602,7 +602,12 @@ func (t *searchTask) createLexicalHighlighter(highlighter *commonpb.Highlighter,
602602 if err != nil {
603603 return err
604604 }
605- return h .addTaskWithSearchText (fieldId , fieldName , analyzerName , texts )
605+ err = h .addTaskWithSearchText (fieldId , fieldName , analyzerName , texts )
606+ if err != nil {
607+ return err
608+ }
609+
610+ return h .initHighlightQueries (t )
606611 }
607612 return nil
608613}
@@ -642,10 +647,26 @@ func (t *searchTask) initSearchRequest(ctx context.Context) error {
642647 }
643648 }
644649
650+ if t .SearchRequest .MetricType == metric .BM25 {
651+ analyzer , err := funcutil .GetAttrByKeyFromRepeatedKV (AnalyzerKey , t .request .GetSearchParams ())
652+ if err == nil {
653+ t .SearchRequest .AnalyzerName = analyzer
654+ }
655+ }
656+
645657 t .isIterator = isIterator
646658 t .SearchRequest .Offset = offset
647659 t .SearchRequest .FieldId = queryInfo .GetQueryFieldId ()
648660
661+ if err := t .addHighlightTask (t .request .GetHighlighter (), queryInfo .GetMetricType (), queryInfo .GetQueryFieldId (), t .request .GetPlaceholderGroup (), t .SearchRequest .GetAnalyzerName ()); err != nil {
662+ return err
663+ }
664+
665+ // add highlight field ids to output fields id
666+ if t .highlighter != nil {
667+ t .SearchRequest .OutputFieldsId = append (t .SearchRequest .OutputFieldsId , t .highlighter .FieldIDs ()... )
668+ }
669+
649670 if t .partitionKeyMode {
650671 // isolation has tighter constraint, check first
651672 mvErr := setQueryInfoIfMvEnable (queryInfo , t , plan )
@@ -696,16 +717,6 @@ func (t *searchTask) initSearchRequest(ctx context.Context) error {
696717 t .SearchRequest .GroupByFieldId = queryInfo .GroupByFieldId
697718 t .SearchRequest .GroupSize = queryInfo .GroupSize
698719
699- if t .SearchRequest .MetricType == metric .BM25 {
700- analyzer , err := funcutil .GetAttrByKeyFromRepeatedKV (AnalyzerKey , t .request .GetSearchParams ())
701- if err == nil {
702- t .SearchRequest .AnalyzerName = analyzer
703- }
704- }
705- if err := t .addHighlightTask (t .request .GetHighlighter (), t .SearchRequest .MetricType , t .SearchRequest .FieldId , t .request .GetPlaceholderGroup (), t .SearchRequest .GetAnalyzerName ()); err != nil {
706- return err
707- }
708-
709720 if embedding .HasNonBM25Functions (t .schema .CollectionSchema .Functions , []int64 {queryInfo .GetQueryFieldId ()}) {
710721 ctx , sp := otel .Tracer (typeutil .ProxyRole ).Start (ctx , "Proxy-Search-call-function-udf" )
711722 defer sp .End ()
0 commit comments