From 068f9501a6ffc5e3f340f142ba5fa4de5be888d3 Mon Sep 17 00:00:00 2001
From: Viktor Kovtun <viktor.kovtun@id.ethz.ch>
Date: Fri, 17 Apr 2020 16:23:59 +0200
Subject: [PATCH] SSDM-9369 Working on determining the position of the matches
 inside the results.

---
 .../GlobalSearchCriteriaTranslator.java          | 16 +++++++++++++++-
 .../asapi/v3/search/translator/SQLLexemes.java   |  2 ++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/GlobalSearchCriteriaTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/GlobalSearchCriteriaTranslator.java
index d39126898a4..c31f20025be 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/GlobalSearchCriteriaTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/GlobalSearchCriteriaTranslator.java
@@ -25,6 +25,15 @@ public class GlobalSearchCriteriaTranslator
 
     public static final String IDENTIFIER_ALIAS = "identifier";
 
+    public static final String HEADLINE_ALIAS_SUFFIX = "_headline";
+
+    private static final String START_SEL = "<{(";
+
+    private static final String STOP_SEL = ")}>";
+
+    private static final String TS_HEADLINE_OPTIONS = "HighlightAll=TRUE, StartSel=" + START_SEL
+            +", StopSel=" + STOP_SEL;
+
     private GlobalSearchCriteriaTranslator()
     {
         throw new UnsupportedOperationException();
@@ -115,11 +124,16 @@ public class GlobalSearchCriteriaTranslator
         sqlBuilder.append(TS_RANK).append(LP).append(MAIN_TABLE_ALIAS).append(PERIOD).append(TSVECTOR_DOCUMENT).append(COMMA).append(SP);
 
         buildTsQueryPart(sqlBuilder, value, args);
-        sqlBuilder.append(RP).append(SP).append(RANK_ALIAS)/*.append(COMMA).append(SP)*/;
+        sqlBuilder.append(RP).append(SP).append(RANK_ALIAS).append(COMMA).append(SP);
 
 //        sqlBuilder.append(QU).append(SP).append(SEARCH_STRING_ALIAS).append(NL);
 //        args.add(value);
 
+        sqlBuilder.append(TS_HEADLINE).append(LP).append(MAIN_TABLE_ALIAS).append(PERIOD).append(CODE_COLUMN).append(COMMA).append(SP);
+        buildTsQueryPart(sqlBuilder, value, args);
+        sqlBuilder.append(COMMA).append(SP).append(SQ).append(TS_HEADLINE_OPTIONS).append(SQ).append(RP).append(SP)
+                .append(CODE_COLUMN).append(HEADLINE_ALIAS_SUFFIX);
+
         sqlBuilder.append(NL);
 
         // FROM
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/SQLLexemes.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/SQLLexemes.java
index 05d0071e82d..3068cd0aaff 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/SQLLexemes.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/search/translator/SQLLexemes.java
@@ -31,6 +31,8 @@ public class SQLLexemes
 
     public static final String TO_TSQUERY = "to_tsquery";
 
+    public static final String TS_HEADLINE = "ts_headline";
+
     public static final String PLAINTO_TSQUERY = "plainto_tsquery";
 
     public static final String NUMERIC = "numeric";
-- 
GitLab