From 43ea3121446cfd8dbe8f9127b0aba35adab2b1bb Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Thu, 16 Oct 2025 18:45:43 +0800 Subject: [PATCH] Fix: search highlight. (#10616) ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/chunk_app.py | 2 +- rag/nlp/search.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/api/apps/chunk_app.py b/api/apps/chunk_app.py index 5c3c30d65..bd79e6e38 100644 --- a/api/apps/chunk_app.py +++ b/api/apps/chunk_app.py @@ -60,7 +60,7 @@ def list_chunk(): } if "available_int" in req: query["available_int"] = int(req["available_int"]) - sres = settings.retriever.search(query, search.index_name(tenant_id), kb_ids, highlight=True) + sres = settings.retriever.search(query, search.index_name(tenant_id), kb_ids, highlight=["content_ltks"]) res = {"total": sres.total, "chunks": [], "doc": doc.to_dict()} for id in sres.ids: d = { diff --git a/rag/nlp/search.py b/rag/nlp/search.py index 7205a9fd4..74d38bb4b 100644 --- a/rag/nlp/search.py +++ b/rag/nlp/search.py @@ -72,7 +72,7 @@ class Dealer: def search(self, req, idx_names: str | list[str], kb_ids: list[str], emb_mdl=None, - highlight=False, + highlight: bool | list = False, rank_feature: dict | None = None ): filters = self.get_filters(req) @@ -101,7 +101,11 @@ class Dealer: total = self.dataStore.getTotal(res) logging.debug("Dealer.search TOTAL: {}".format(total)) else: - highlightFields = ["content_ltks", "title_tks"] if highlight else [] + highlightFields = ["content_ltks", "title_tks"] + if not highlight: + highlightFields = [] + elif isinstance(highlight, list): + highlightFields = highlight matchText, keywords = self.qryr.question(qst, min_match=0.3) if emb_mdl is None: matchExprs = [matchText]