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();
}