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 c18e52ed6964fec7b4aa3f5272b5f752d07252f0..671e7fd357ace059fef839ff2748541937082686 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 = "[";