This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 5aadfaf30b95823bdf95fe40eb67a6513f835592 Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Tue Sep 16 22:36:41 2025 +0200 JAMES-4057 Align attachments to query string management --- .../query/DefaultCriterionConverter.java | 40 ++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/DefaultCriterionConverter.java b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/DefaultCriterionConverter.java index 0c8f56f15f..f81154a3d9 100644 --- a/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/DefaultCriterionConverter.java +++ b/mailbox/opensearch/src/main/java/org/apache/james/mailbox/opensearch/query/DefaultCriterionConverter.java @@ -297,7 +297,7 @@ public class DefaultCriterionConverter implements CriterionConverter { .toQuery(); } case ATTACHMENTS: - if (useQueryStringQuery) { + if (useQueryStringQuery && QUERY_STRING_CONTROL_CHAR.matchesAnyOf(textCriterion.getOperator().getValue())) { return new BoolQuery.Builder() .should(new SimpleQueryStringQuery.Builder() .fields(ImmutableList.of(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.TEXT_CONTENT)) @@ -330,21 +330,33 @@ public class DefaultCriterionConverter implements CriterionConverter { .toQuery(); } case ATTACHMENT_FILE_NAME: - return new BoolQuery.Builder() - .should(new MatchQuery.Builder() - .field(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.FILENAME) - .query(new FieldValue.Builder().stringValue(textCriterion.getOperator().getValue()).build()) - .fuzziness(textFuzzinessSearchValue) - .operator(Operator.And) + if (useQueryStringQuery && QUERY_STRING_CONTROL_CHAR.matchesAnyOf(textCriterion.getOperator().getValue())) { + return new BoolQuery.Builder() + .should(new SimpleQueryStringQuery.Builder() + .fields(ImmutableList.of(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.FILENAME)) + .query(textCriterion.getOperator().getValue()) + .defaultOperator(Operator.And) + .lenient(true) + .build().toQuery()) .build() - .toQuery()) - .should(new TermQuery.Builder() - .field(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.FILE_EXTENSION) - .value(new FieldValue.Builder().stringValue(textCriterion.getOperator().getValue()).build()) + .toQuery(); + } else { + return new BoolQuery.Builder() + .should(new MatchQuery.Builder() + .field(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.FILENAME) + .query(new FieldValue.Builder().stringValue(textCriterion.getOperator().getValue()).build()) + .fuzziness(textFuzzinessSearchValue) + .operator(Operator.And) + .build() + .toQuery()) + .should(new TermQuery.Builder() + .field(JsonMessageConstants.ATTACHMENTS + "." + JsonMessageConstants.Attachment.FILE_EXTENSION) + .value(new FieldValue.Builder().stringValue(textCriterion.getOperator().getValue()).build()) + .build() + .toQuery()) .build() - .toQuery()) - .build() - .toQuery(); + .toQuery(); + } default: throw new RuntimeException("Unknown SCOPE for text criterion"); } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org