{"record":{"id":"1dfa35c83ab3a9af","repo":"OrchardCMS/OrchardCore","slug":"invalid-value-in-boolean-query","errorCode":null,"errorMessage":"Invalid value in boolean query","messagePattern":"Invalid value in boolean query","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/OrchardCore/OrchardCore.Lucene.Core/QueryProviders/BooleanQueryProvider.cs","lineNumber":68,"sourceCode":"                    break;\n                case \"filter\":\n                    return CreateFilteredQuery(builder, context, boolQuery, property.Value);\n                default: throw new ArgumentException($\"Invalid property '{property.Key}' in boolean query\");\n            }\n\n            if (!isProps)\n            {\n                switch (property.Value.GetValueKind())\n                {\n                    case JsonValueKind.Object:\n                        boolQuery.Add(builder.CreateQueryFragment(context, property.Value.AsObject()), occur);\n                        break;\n                    case JsonValueKind.Array:\n                        foreach (var item in property.Value.AsArray())\n                        {\n                            if (item.GetValueKind() != JsonValueKind.Object)\n                            {\n                                throw new ArgumentException($\"Invalid value in boolean query\");\n                            }\n                            boolQuery.Add(builder.CreateQueryFragment(context, item.AsObject()), occur);\n                        }\n                        break;\n                    default: throw new ArgumentException($\"Invalid value in boolean query\");\n                }\n            }\n        }\n\n        return boolQuery;\n    }\n\n    private Query CreateFilteredQuery(ILuceneQueryService builder, LuceneQueryContext context, Query query, JsonNode filter)\n    {\n        Query filteredQuery;\n\n        switch (filter.GetValueKind())\n        {","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/OrchardCMS/OrchardCore/blob/4306c0717fe573f6fca1b4955909ddab6a192807/src/OrchardCore/OrchardCore.Lucene.Core/QueryProviders/BooleanQueryProvider.cs#L50-L86","documentation":"In a boolean query, must/mustNot/should clause values must be JSON objects (query fragments). When the property is an array, each element must also be an object; any non-object element (string, number, etc.) throws this error.","triggerScenarios":"Passing {\"bool\":{\"should\":[\"term\"]}} or any array containing a non-object element.","commonSituations":"Hand-edited query JSON where a clause was left as a raw string, or programmatic builders that append raw values instead of query objects.","solutions":["Wrap each clause in a proper query object, e.g. {\"term\":{\"field\":\"value\"}}.","Ensure every element of the must/mustNot/should arrays is a JSON object.","Validate clause shape client-side before sending the query."],"exampleFix":"// before\n{\"query\":{\"bool\":{\"should\":[\"term\"]}}}\n// after\n{\"query\":{\"bool\":{\"should\":[{\"term\":{\"field\":\"value\"}}]}}}","handlingStrategy":"validation","validationCode":"if (clauses is JsonArray arr && arr.Any(c => c is not JsonObject))\n    throw new ArgumentException(\"Every must/mustNot/should array element must be a query object.\");","typeGuard":"static bool IsClauseArray(JsonNode? n) => n is not JsonArray a || a.All(i => i is JsonObject);","tryCatchPattern":"try { return builder.CreateQueryFragment(context, node); }\ncatch (ArgumentException ex) when (ex.Message == \"Invalid value in boolean query\") { /* show DSL error to user */ }","preventionTips":["Always wrap clause text in a concrete query object like term/match.","Build query JSON programmatically instead of hand-editing strings."],"tags":["lucene","query-dsl","boolean-query"],"backgroundTag":"invalid-argument-format","analyzedSha":"4306c0717fe573f6fca1b4955909ddab6a192807","analyzedAt":"2026-09-13T17:41:05.024Z","contentChangedAt":"2026-09-13T17:41:05.024Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}