diff --git a/src/main/data-generator/lucene-query.yaml b/src/main/data-generator/lucene-query.yaml index 678cea7..669152c 100644 --- a/src/main/data-generator/lucene-query.yaml +++ b/src/main/data-generator/lucene-query.yaml @@ -18,7 +18,7 @@ versions: DoubleNDPointRangeQuery, IntPointExactQuery, IntNDPointExactQuery, LongPointExactQuery, FloatPointExactQuery, FloatPointExactQuery, DoublePointExactQuery, LongNDPointExactQuery, FloatNDPointExactQuery, DoubleNDPointExactQuery, IntPointSetQuery, LongPointSetQuery, FloatPointSetQuery, DoublePointSetQuery, - StandardQuery + StandardQuery, FieldExistsQuery ] Occur: [OccurMust, OccurMustNot, OccurShould, OccurFilter] Sort: [NoSort, NumericSort, ScoreSort, DocSort, RandomSort] @@ -130,6 +130,10 @@ versions: data: field: String value: double[] + # Query that matches the existence of a field. + FieldExistsQuery: + data: + field: String # Query that matches a phrase. PhraseQuery: data: diff --git a/src/main/java/it/cavallium/dbengine/client/query/QueryParser.java b/src/main/java/it/cavallium/dbengine/client/query/QueryParser.java index f850d17..7265dce 100644 --- a/src/main/java/it/cavallium/dbengine/client/query/QueryParser.java +++ b/src/main/java/it/cavallium/dbengine/client/query/QueryParser.java @@ -11,6 +11,7 @@ import it.cavallium.dbengine.client.query.current.data.DoublePointExactQuery; import it.cavallium.dbengine.client.query.current.data.DoublePointRangeQuery; import it.cavallium.dbengine.client.query.current.data.DoublePointSetQuery; import it.cavallium.dbengine.client.query.current.data.DoubleTermQuery; +import it.cavallium.dbengine.client.query.current.data.FieldExistsQuery; import it.cavallium.dbengine.client.query.current.data.FloatNDPointExactQuery; import it.cavallium.dbengine.client.query.current.data.FloatNDPointRangeQuery; import it.cavallium.dbengine.client.query.current.data.FloatNDTermQuery; @@ -223,6 +224,9 @@ public class QueryParser { return new org.apache.lucene.search.TermQuery(new Term(doubleNDTermQuery.field(), DoublePoint.pack(doubleNDTermQuery.value().toDoubleArray()) )); + case FieldExistsQuery: + var fieldExistQuery = (FieldExistsQuery) query; + return new org.apache.lucene.search.FieldExistsQuery(fieldExistQuery.field()); case BoostQuery: var boostQuery = (BoostQuery) query; return new org.apache.lucene.search.BoostQuery(toQuery(boostQuery.query(), analyzer), boostQuery.scoreBoost());