From 800d22bb3b5c8e957b83cd143a7147414e13d235 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Wed, 28 Oct 2009 04:54:38 +0000
Subject: [PATCH] LMS-1200 Cannot find data sets when the search query contains
 "-"

SVN: 13104
---
 .../dataaccess/db/search/LuceneQueryBuilder.java    | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java
index c18e52ed696..671e7fd357a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java
@@ -48,9 +48,6 @@ public class LuceneQueryBuilder
     public static String adaptQuery(String userQuery)
     {
         String result = disableFieldQuery(userQuery);
-        result =
-                removeSurroundingWordSeparators(result,
-                        SeparatorSplitterTokenFilter.WORD_SEPARATORS);
         result = replaceWordSeparators(result, SeparatorSplitterTokenFilter.WORD_SEPARATORS);
         return result;
     }
@@ -58,6 +55,10 @@ public class LuceneQueryBuilder
     @Private
     static String replaceWordSeparators(String query, char[] wordSeparators)
     {
+        if (looksLikeNumber(query))
+        {
+            return query;
+        }
         String queryTrimmed = removeSurroundingWordSeparators(query, wordSeparators);
         String charsRegexp = createAnyWordSeparatorRegexp(wordSeparators);
         String queryWithoutSeparators = queryTrimmed.replaceAll(charsRegexp, " AND ");
@@ -70,6 +71,12 @@ public class LuceneQueryBuilder
         }
     }
 
+    private static boolean looksLikeNumber(String query)
+    {
+        return query.length() > 0 && Character.isDigit(query.charAt(0))
+                && Character.isDigit(query.charAt(query.length() - 1));
+    }
+
     private static String createAnyWordSeparatorRegexp(char[] wordSeparators)
     {
         String charsRegexp = "[";
-- 
GitLab