{"record":{"id":"7f50092108b36a12","repo":"languagetool-org/languagetool","slug":"could-not-create-query-for-rule-rule-getid","errorCode":null,"errorMessage":"Could not create query for rule + rule.getId()","messagePattern":"Could not create query for rule \\+ rule\\.getId\\(\\)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java","lineNumber":81,"sourceCode":"    this.indexSearcher = indexSearcher;\n    this.searchFieldName = searchFieldName;\n  }\n\n  /**\n   * Iterate over all elements, ignore those not supported, add the other ones to a BooleanQuery.\n   * @throws UnsupportedPatternRuleException if no query could be created for the rule\n   */\n  public Query buildRelaxedQuery(AbstractPatternRule rule) throws UnsupportedPatternRuleException {\n    BooleanQuery.Builder builder = new BooleanQuery.Builder();\n    for (PatternToken patternToken : rule.getPatternTokens()) {\n      try {\n        BooleanClause clause = makeQuery(patternToken);\n        builder.add(clause);\n      } catch (UnsupportedPatternRuleException e) {\n        //System.out.println(\"Ignoring because it's not supported: \" + element + \": \" + e);\n        // cannot handle - okay to ignore, as we may return too broad matches\n      } catch (Exception e) {\n        throw new RuntimeException(\"Could not create query for rule \" + rule.getId(), e);\n      }\n    }\n    BooleanQuery query = builder.build();\n    if (query.clauses().isEmpty()) {\n      throw new UnsupportedPatternRuleException(\"No items found in rule that can be used to build a search query: \" + rule);\n    }\n    return query;\n  }\n\n  private BooleanClause makeQuery(PatternToken patternToken) throws UnsupportedPatternRuleException {\n    checkUnsupportedElement(patternToken);\n\n    String termStr = patternToken.getString();\n    String pos = patternToken.getPOStag();\n\n    BooleanClause termQuery = getTermQueryOrNull(patternToken, termStr);\n    BooleanClause posQuery = getPosQueryOrNull(patternToken, pos);\n","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java#L63-L99","documentation":"Search-index guard: PatternRuleQueryBuilder could not turn the grammar rule (rule.getId()) into any Lucene query because its pattern elements are unsupported for indexing; thrown as UnsupportedPatternRuleException so the caller can skip the rule.","triggerScenarios":"Thrown at languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java:81 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Simplify the rule's pattern tokens to plain terms or POS tags","Skip rules that throw this exception when batch-indexing Wikipedia","Extend PatternRuleQueryBuilder to support the missing construct"],"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"}