This is an automated email from the ASF dual-hosted git repository.

fortino pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new bacafcbad6 OAK-10576: do not use dynamic boosted fields when querying 
on specific fields (#1246)
bacafcbad6 is described below

commit bacafcbad63529cc3af5fae48c89c54797cbe1d8
Author: Fabrizio Fortino <[email protected]>
AuthorDate: Mon Dec 4 10:06:48 2023 +0100

    OAK-10576: do not use dynamic boosted fields when querying on specific 
fields (#1246)
    
    * OAK-10576: do not use dynamic boosted fields when querying on specific 
fields
    
    * OAK-10576: fixed typo
---
 .../index/elastic/query/ElasticRequestHandler.java        |  9 +++++----
 .../oak/plugins/index/DynamicBoostCommonTest.java         | 15 +++++++++++++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
 
b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
index e4cd77b21d..f04d38c2d2 100644
--- 
a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
+++ 
b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
@@ -809,7 +809,7 @@ public class ElasticRequestHandler {
         return Query.of(q -> q.multiMatch(m -> m.fields(uuid)));
     }
 
-    private static QueryStringQuery.Builder fullTextQuery(String text, String 
fieldName, PlanResult pr, boolean dynamicBoosEnabled) {
+    private static QueryStringQuery.Builder fullTextQuery(String text, String 
fieldName, PlanResult pr, boolean dynamicBoostEnabled) {
         LOG.debug("fullTextQuery for text: '{}', fieldName: '{}'", text, 
fieldName);
         QueryStringQuery.Builder qsqBuilder = new QueryStringQuery.Builder()
                 .query(FulltextIndex.rewriteQueryText(text))
@@ -820,9 +820,10 @@ public class ElasticRequestHandler {
             for(PropertyDefinition pd: 
pr.indexingRule.getNodeScopeAnalyzedProps()) {
                 qsqBuilder.fields(pd.name + "^" + pd.boost);
             }
-        }
-        if (dynamicBoosEnabled) {
-            qsqBuilder.fields(ElasticIndexDefinition.DYNAMIC_BOOST_FULLTEXT + 
"^" + DYNAMIC_BOOST_WEIGHT);
+            // dynamic boost is included only for :fulltext field
+            if (dynamicBoostEnabled) {
+                
qsqBuilder.fields(ElasticIndexDefinition.DYNAMIC_BOOST_FULLTEXT + "^" + 
DYNAMIC_BOOST_WEIGHT);
+            }
         }
         return qsqBuilder.fields(fieldName);
     }
diff --git 
a/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/DynamicBoostCommonTest.java
 
b/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/DynamicBoostCommonTest.java
index 75dcbee99d..9cd2d5edbe 100644
--- 
a/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/DynamicBoostCommonTest.java
+++ 
b/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/DynamicBoostCommonTest.java
@@ -161,6 +161,20 @@ public abstract class DynamicBoostCommonTest extends 
AbstractQueryTest {
         });
     }
 
+    @Test
+    public void dynamicBoostShouldNotMatchOnSingleFields() throws Exception {
+        boolean lite = areAnalyzeFeaturesSupportedInLiteModeOnly();
+        createAssetsIndexAndProperties(lite, lite);
+        prepareTestAssets();
+
+        assertEventually(() -> {
+            assertOrderedQuery("select [jcr:path] from [dam:Asset] where 
contains(*, 'long')",
+                    List.of("/test/asset1", "/test/asset2", "/test/asset3"));
+            assertOrderedQuery("select [jcr:path] from [dam:Asset] where 
contains(title, 'long')",
+                    List.of("/test/asset1", "/test/asset2"));
+        });
+    }
+
     protected abstract String getTestQueryDynamicBoostBasicExplained();
 
     protected boolean areAnalyzeFeaturesSupportedInLiteModeOnly() {
@@ -188,6 +202,7 @@ public abstract class DynamicBoostCommonTest extends 
AbstractQueryTest {
         predicted3.setProperty("jcr:uuid", UUID.randomUUID().toString());
         createPredictedTag(predicted3, "plant", 0.5);
         createPredictedTag(predicted3, "blue", 0.5);
+        createPredictedTag(predicted3, "long", 0.1);
         root.commit();
     }
 

Reply via email to