From 75acf5110e14480c5f8027329e5013211dab59ae Mon Sep 17 00:00:00 2001 From: Elia Porciani Date: Sun, 9 Oct 2022 10:47:18 +0200 Subject: [PATCH] Fix/acs 2699 mandatory modifier (#1472) [ACS-2699] managed + and - modifiers in fts query parser --- .../repo/search/impl/parsers/FTSQueryParser.java | 2 +- .../querymodel/impl/lucene/LuceneDisjunction.java | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/data-model/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java b/data-model/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java index 6664178ca3..c30a13a848 100644 --- a/data-model/src/main/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java +++ b/data-model/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 && Occur.EXCLUDE != constraints.get(0).getOccur()) + if (constraints.size() == 1) { return constraints.get(0); } diff --git a/data-model/src/main/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java b/data-model/src/main/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java index b18b324f50..4e846b020c 100644 --- a/data-model/src/main/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java +++ b/data-model/src/main/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java @@ -69,21 +69,20 @@ public class LuceneDisjunction extends BaseDisjunctio @SuppressWarnings("unchecked") LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) constraint; Q constraintQuery = luceneQueryBuilderComponent.addComponent(selectors, functionArgs, luceneContext, functionContext); - queriestoDisjoin.add(new Pair(constraint, constraintQuery)); + queriestoDisjoin.add(new Pair<>(constraint, constraintQuery)); if (constraintQuery != null) { switch (constraint.getOccur()) { case DEFAULT: - case MANDATORY: case OPTIONAL: expressionBuilder.addOptional(constraintQuery, constraint.getBoost()); break; + case MANDATORY: + expressionBuilder.addRequired(constraintQuery, constraint.getBoost()); + break; case EXCLUDE: - QueryParserExpressionAdaptor subExpressionBuilder = luceneContext.getLuceneQueryParserAdaptor().getExpressionAdaptor(); - subExpressionBuilder.addRequired(luceneContext.getLuceneQueryParserAdaptor().getMatchAllNodesQuery()); - subExpressionBuilder.addExcluded(constraintQuery); - expressionBuilder.addOptional(subExpressionBuilder.getQuery(), constraint.getBoost()); + expressionBuilder.addExcluded(constraintQuery, constraint.getBoost()); break; } }