Skip to content

Commit d8e8390

Browse files
author
jdnvn
committed
add visitor logic to FunctionScoreQueryBuilder
1 parent 6152afe commit d8e8390

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

server/src/main/java/org/opensearch/index/query/functionscore/FunctionScoreQueryBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
package org.opensearch.index.query.functionscore;
3434

35+
import org.apache.lucene.search.BooleanClause;
3536
import org.apache.lucene.search.MatchAllDocsQuery;
3637
import org.apache.lucene.search.Query;
3738
import org.opensearch.common.Nullable;
@@ -52,6 +53,7 @@
5253
import org.opensearch.index.query.MatchAllQueryBuilder;
5354
import org.opensearch.index.query.MatchNoneQueryBuilder;
5455
import org.opensearch.index.query.QueryBuilder;
56+
import org.opensearch.index.query.QueryBuilderVisitor;
5557
import org.opensearch.index.query.QueryRewriteContext;
5658
import org.opensearch.index.query.QueryShardContext;
5759

@@ -704,4 +706,12 @@ private static String parseFiltersAndFunctions(
704706
}
705707
return currentFieldName;
706708
}
709+
710+
@Override
711+
public void visit(QueryBuilderVisitor visitor) {
712+
visitor.accept(this);
713+
if (query != null) {
714+
visitor.getChildVisitor(BooleanClause.Occur.MUST).accept(query);
715+
}
716+
}
707717
}

server/src/test/java/org/opensearch/index/query/functionscore/FunctionScoreQueryBuilderTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import org.hamcrest.Matcher;
7676

7777
import java.io.IOException;
78+
import java.util.ArrayList;
7879
import java.util.Arrays;
7980
import java.util.Collection;
8081
import java.util.Collections;
@@ -938,4 +939,14 @@ public void testMustRewrite() throws IOException {
938939
e = expectThrows(IllegalStateException.class, () -> functionQueryBuilder2.toQuery(context));
939940
assertEquals("Rewrite first", e.getMessage());
940941
}
942+
943+
public void testVisit() {
944+
TermQueryBuilder termQueryBuilder = new TermQueryBuilder("unmapped_field", "foo");
945+
FunctionScoreQueryBuilder builder = new FunctionScoreQueryBuilder(termQueryBuilder);
946+
947+
List<QueryBuilder> visitedQueries = new ArrayList<>();
948+
builder.visit(createTestVisitor(visitedQueries));
949+
950+
assertEquals(2, visitedQueries.size());
951+
}
941952
}

0 commit comments

Comments
 (0)