File tree Expand file tree Collapse file tree
opensearch/src/main/java/org/opensearch/sql/opensearch/storage Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -60,9 +60,18 @@ public TableScanBuilder createScanBuilder() {
6060 getSettings ().getSettingValue (Settings .Key .SQL_CURSOR_KEEP_ALIVE );
6161 var requestBuilder = createRequestBuilder ();
6262
63- // Use VectorSearchQueryBuilder to keep knn in must (scoring) context.
64- // WHERE filters will be placed in filter (non-scoring) context.
65- var queryBuilder = new VectorSearchQueryBuilder (requestBuilder , buildKnnQuery (), options );
63+ // Callback for efficient filtering: serialize WHERE QueryBuilder to JSON,
64+ // rebuild knn query with filter embedded. JSON handling stays in this class.
65+ Function <QueryBuilder , QueryBuilder > rebuildWithFilter =
66+ whereQuery -> new WrapperQueryBuilder (buildKnnQueryJson (whereQuery .toString ()));
67+
68+ boolean filterTypeExplicit = filterType != null ;
69+ FilterType effectiveFilterType = filterType != null ? filterType : FilterType .POST ;
70+
71+ var queryBuilder =
72+ new VectorSearchQueryBuilder (
73+ requestBuilder , buildKnnQuery (), options ,
74+ effectiveFilterType , filterTypeExplicit , rebuildWithFilter );
6675 requestBuilder .pushDownTrackedScore (true );
6776
6877 // Default size policy: LIMIT pushdown will further reduce if present.
You can’t perform that action at this time.
0 commit comments