From 32becdd4c67e5c8a68448934ed06f1cc5d445664 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 30 Nov 2017 16:40:01 +0000 Subject: [PATCH] Implement fix to handle negation edge case --- .../alfresco/repo/search/impl/parsers/FTSQueryParser.java | 2 +- .../org/alfresco/repo/search/impl/parsers/fts_test.gunit | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java b/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java index e7d8f4ee9d..7fe89e44f1 100644 --- a/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java +++ b/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java @@ -346,7 +346,7 @@ public class FTSQueryParser } constraints.add(constraint); } - if (constraints.size() == 1) + if (constraints.size() == 1 && Occur.EXCLUDE != constraints.get(0).getOccur()) { return constraints.get(0); } diff --git a/src/test/resources/org/alfresco/repo/search/impl/parsers/fts_test.gunit b/src/test/resources/org/alfresco/repo/search/impl/parsers/fts_test.gunit index 90d1f43223..99b6a03f05 100644 --- a/src/test/resources/org/alfresco/repo/search/impl/parsers/fts_test.gunit +++ b/src/test/resources/org/alfresco/repo/search/impl/parsers/fts_test.gunit @@ -180,6 +180,7 @@ ftsTest: "*woof*woof*" ->"(TERM *woof*woof*)" "cm:content.mimetype:*" -> "(TERM * (FIELD_REF content.mimetype (PREFIX cm)))" + ftsTermOrPhrase: "name:woof" -> "(TERM woof (FIELD_REF name))" "cm_name:woof" -> "(TERM woof (FIELD_REF cm_name))" @@ -223,7 +224,9 @@ ftsFieldGroupTest: "[12 TO 14]" -> "(FG_RANGE INCLUSIVE 12 14 INCLUSIVE)" "<12 TO 14>" -> "(FG_RANGE EXCLUSIVE 12 14 EXCLUSIVE)" "(apple cheese and (pear or banana or not orange))" -> "(FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM apple)) (FIELD_DEFAULT (FG_TERM cheese)) (FIELD_DEFAULT (FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM pear))) (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM banana))) (FIELD_CONJUNCTION (FIELD_NEGATION (FG_TERM orange)))))))" - +"(apple chesse and banana)" -> (FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM apple)) (FIELD_DEFAULT (FG_TERM chesse)) (FIELD_DEFAULT (FG_TERM banana)))) +"(apple chesse and not banana)" -> (FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM apple)) (FIELD_DEFAULT (FG_TERM chesse)) (FIELD_NEGATION (FG_TERM banana)))) +"(apple chesse and (not banana))" -> (FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_DEFAULT (FG_TERM apple)) (FIELD_DEFAULT (FG_TERM chesse)) (FIELD_DEFAULT (FIELD_DISJUNCTION (FIELD_CONJUNCTION (FIELD_NEGATION (FG_TERM banana))))))) ftsFieldGroupTerm: "woof" -> "woof"