languagetool-org/languagetool · error · RuntimeException

Could not build Lucene query for '" + patternToken + "' and

Error message

Could not build Lucene query for '" + patternToken + "' and '" + termStr + "'

What it means

Search-index guard in getTermQueryOrNull: synthesizing word forms for the token (to expand lemma matching via the language's Synthesizer) failed, so a Lucene term query for that token cannot be built.

Source

Thrown at languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java:175

      /*
      This is simpler, but leads to problem with e.g. German rules ZEITLICH_SYNCHRON and GEWISSEN_SUBST:
      Term lemmaQueryTerm = getQueryTerm(element, LEMMA_PREFIX, termStr, "");
      Query query = new TermQuery(lemmaQueryTerm);
      return new BooleanClause(query, BooleanClause.Occur.MUST);
      */
      Synthesizer synthesizer = language.getSynthesizer();
      if (synthesizer != null) {
        try {
          String[] synthesized = synthesizer.synthesize(new AnalyzedToken(termStr, null, termStr), ".*", true);
          Query query;
          if (synthesized.length == 0) {
            query = new TermQuery(termQueryTerm);
          } else {
            query = new RegexpQuery(getTermQueryTerm(StringUtils.join(synthesized, "|")));
          }
          return new BooleanClause(query, BooleanClause.Occur.MUST);
        } catch (IOException e) {
          throw new RuntimeException("Could not build Lucene query for '" + patternToken + "' and '" + termStr + "'", e);
        }
      }
      return null;
    } else if (patternToken.isRegularExpression()) {
      termQuery = getRegexQuery(termQueryTerm, termStr, patternToken);
    } else {
      termQuery = new TermQuery(termQueryTerm);
    }
    return new BooleanClause(termQuery, BooleanClause.Occur.MUST);
  }

  // regex syntax not supported, but doesn't matter - remove or simplify it:
  private String simplifyRegex(String regex) {
    return regex.replace("(?:", "(").replace("\\d", "[0-9]").replace("\\w", "[a-zA-Z_0-9]");
  }

  // the new and fast Regex query of Lucene doesn't support full Java regex syntax:
  private boolean needsSimplification(String regex) {

View on GitHub (pinned to 2e990059ce)

Solutions

  1. Check the language's synthesizer dictionary is available and consistent
  2. Use a plain term instead of a lemma on that element
  3. Skip the rule for index-based checking
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at languagetool-wikipedia/src/main/java/org/languagetool/dev/index/PatternRuleQueryBuilder.java:175 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of languagetool-org/languagetool@2e990059ce (2026-09-06). Data as JSON: /api/errors/9e4060350b4c4acb. Report an issue: GitHub.