in nouveau/src/main/java/org/apache/couchdb/nouveau/lucene9/QuerySerializer.java [46:167]
public void serialize(final Query query, final JsonGenerator gen, final SerializerProvider provider)
throws IOException {
if (query instanceof TermQuery) {
final TermQuery termQuery = (TermQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "term");
gen.writeStringField("field", termQuery.getTerm().field());
gen.writeStringField("term", termQuery.getTerm().text());
gen.writeEndObject();
return;
}
if (query instanceof BooleanQuery) {
final BooleanQuery booleanQuery = (BooleanQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "boolean");
gen.writeFieldName("clauses");
gen.writeStartArray();
for (final BooleanClause clause : booleanQuery.clauses()) {
gen.writeStartObject();
gen.writeFieldName("query");
serialize(clause.getQuery(), gen, provider);
gen.writeStringField("occur", clause.getOccur().name().toLowerCase());
gen.writeEndObject();
}
gen.writeEndArray();
gen.writeEndObject();
return;
}
if (query instanceof WildcardQuery) {
final WildcardQuery wildcardQuery = (WildcardQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "wildcard");
gen.writeStringField("field", wildcardQuery.getField());
gen.writeStringField("text", wildcardQuery.getTerm().text());
gen.writeEndObject();
return;
}
if (query instanceof PhraseQuery) {
final PhraseQuery phraseQuery = (PhraseQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "phrase");
gen.writeStringField("field", phraseQuery.getField());
gen.writeFieldName("terms");
gen.writeStartArray();
for (final Term term : phraseQuery.getTerms()) {
gen.writeString(term.text());
}
gen.writeEndArray();
gen.writeNumberField("slop", phraseQuery.getSlop());
gen.writeEndObject();
return;
}
if (query instanceof PrefixQuery) {
final PrefixQuery prefixQuery = (PrefixQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "prefix");
gen.writeStringField("field", prefixQuery.getField());
gen.writeStringField("text", prefixQuery.getPrefix().text());
gen.writeEndObject();
return;
}
if (query instanceof FuzzyQuery) {
final FuzzyQuery fuzzyQuery = (FuzzyQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "fuzzy");
gen.writeStringField("field", fuzzyQuery.getField());
gen.writeStringField("text", fuzzyQuery.getTerm().text());
gen.writeNumberField("max_edits", fuzzyQuery.getMaxEdits());
gen.writeNumberField("prefix_length", fuzzyQuery.getPrefixLength());
gen.writeEndObject();
return;
}
if (query instanceof RegexpQuery) {
final RegexpQuery regexpQuery = (RegexpQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "regexp");
gen.writeStringField("field", regexpQuery.getField());
gen.writeStringField("text", regexpQuery.getRegexp().text());
gen.writeEndObject();
return;
}
if (query instanceof TermRangeQuery) {
final TermRangeQuery termRangeQuery = (TermRangeQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "term_range");
gen.writeStringField("field", termRangeQuery.getField());
gen.writeStringField("lower", termRangeQuery.getLowerTerm().utf8ToString());
gen.writeBooleanField("includes_lower", termRangeQuery.includesLower());
gen.writeStringField("upper", termRangeQuery.getUpperTerm().utf8ToString());
gen.writeBooleanField("includes_upper", termRangeQuery.includesUpper());
gen.writeEndObject();
return;
}
if (query instanceof PointRangeQuery) {
final PointRangeQuery pointRangeQuery = (PointRangeQuery) query;
gen.writeStartObject();
gen.writeStringField("@type", "point_range");
gen.writeStringField("field", pointRangeQuery.getField());
gen.writeBinaryField("lower", pointRangeQuery.getLowerPoint());
gen.writeBinaryField("upper", pointRangeQuery.getUpperPoint());
gen.writeNumberField("num_dims", pointRangeQuery.getNumDims());
gen.writeEndObject();
}
if (query instanceof MatchAllDocsQuery) {
gen.writeStartObject();
gen.writeStringField("@type", "match_all");
gen.writeEndObject();
return;
}
throw new JsonGenerationException(query.getClass() + " not supported", gen);
}