{"record":{"id":"dbfe5c1c3ff661fa","repo":"languagetool-org/languagetool","slug":"or-not-yet-supported","errorCode":null,"errorMessage":"<or> not yet supported.","messagePattern":"<or> not yet supported\\.","errorType":"exception","errorClass":"UnsupportedPatternRuleException","httpStatus":null,"severity":"error","filePath":"languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java","lineNumber":246,"sourceCode":"        Term newTerm = new Term(term.field(), simplifyRegex(term.text()));\n        return new RegexpQuery(newTerm);\n      }\n      if (str.contains(\"?iu\") || str.contains(\"?-i\")) {\n        // Lucene's RegexpQuery doesn't seem to support this\n        throw new UnsupportedPatternRuleException(\"Regex constructs like '?iu' and '?-i' are not supported: \" + patternToken);\n      }\n      return new RegexpQuery(term);\n    } catch (IllegalArgumentException e) {\n      // constructs like \"\\p{Punct}\" not supported by Lucene RegExp:\n      throw new UnsupportedPatternRuleException(\"Advanced regex like '\\\\p{Punct}' are not supported: \" + patternToken);\n    }\n  }\n\n  private void checkUnsupportedElement(PatternToken patternPatternToken)\n      throws UnsupportedPatternRuleException {\n    if (patternPatternToken.hasOrGroup()) {\n      // TODO: this is not enough: the first of the tokens in the <or> group will not get into this branch\n      throw new UnsupportedPatternRuleException(\"<or> not yet supported.\");\n    }\n    if (patternPatternToken.isUnified()) {\n      throw new UnsupportedPatternRuleException(\"Elements with unified tokens are not supported.\");\n    }\n    if (patternPatternToken.getString() != null && patternPatternToken.getString().matches(\"\\\\\\\\\\\\d+\")) { // e.g. \"\\1\"\n      throw new UnsupportedPatternRuleException(\"Elements with only match references (e.g. \\\\1) are not supported.\");\n    }\n  }\n\n}\n","sourceCodeStart":228,"sourceCodeEnd":257,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java#L228-L257","documentation":"Search-index guard in checkUnsupportedElement: the pattern token is part of an <or> token group, which the query builder cannot map to Lucene clauses yet.","triggerScenarios":"Thrown at languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java:246 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Flatten the <or> group into separate rules or alternatives","Skip the rule for index-based search","Extend the builder to handle or-groups"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}