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