Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/FulltextIndexConstants.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/FulltextIndexConstants.java?rev=1882970&r1=1882969&r2=1882970&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/FulltextIndexConstants.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/FulltextIndexConstants.java
 Thu Oct 29 16:23:30 2020
@@ -342,6 +342,11 @@ public interface FulltextIndexConstants
     int STATISTICAL_FACET_SAMPLE_SIZE_DEFAULT = 1000;
 
     /**
+     * Property name to specify the size of vectors used for similarity search.
+     */
+    String PROP_SIMILARITY_SEARCH_DENSE_VECTOR_SIZE = 
"similaritySearchDenseVectorSize";
+
+    /**
      * Optional (index definition) property indicating max number of facets 
that will be retrieved
      * in query
      * Default is {@link IndexDefinition#DEFAULT_FACET_COUNT}

Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/PropertyDefinition.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/PropertyDefinition.java?rev=1882970&r1=1882969&r2=1882970&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/PropertyDefinition.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/PropertyDefinition.java
 Thu Oct 29 16:23:30 2020
@@ -40,6 +40,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.FIELD_BOOST;
 import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROP_IS_REGEX;
 import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROP_WEIGHT;
+import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROP_SIMILARITY_SEARCH_DENSE_VECTOR_SIZE;
 import static 
org.apache.jackrabbit.oak.plugins.index.search.spi.query.FulltextIndexPlanner.DEFAULT_PROPERTY_WEIGHT;
 import static 
org.apache.jackrabbit.oak.plugins.index.search.util.ConfigUtil.getOptionalValue;
 
@@ -53,6 +54,8 @@ public class PropertyDefinition {
      */
     static final float DEFAULT_BOOST = 1.0f;
 
+    static final int SIMILARITY_SEARCH_DENSE_VECTOR_SIZE_DEFAULT = 1024;
+
     /**
      * Property name. By default derived from the NodeState name which has the
      * property definition. However in case property name is a pattern, 
relative
@@ -133,6 +136,7 @@ public class PropertyDefinition {
 
     public final boolean similarityRerank;
     public final boolean similarityTags;
+    private final int similaritySearchDVS;
 
     public PropertyDefinition(IndexingRule idxDefn, String nodeName, NodeState 
defn) {
         this.nodeName = nodeName;
@@ -170,6 +174,8 @@ public class PropertyDefinition {
         this.nullCheckEnabled = getOptionalValueIfIndexed(defn, 
FulltextIndexConstants.PROP_NULL_CHECK_ENABLED, false);
         this.notNullCheckEnabled = getOptionalValueIfIndexed(defn, 
FulltextIndexConstants.PROP_NOT_NULL_CHECK_ENABLED, false);
         this.excludeFromAggregate = getOptionalValueIfIndexed(defn, 
FulltextIndexConstants.PROP_EXCLUDE_FROM_AGGREGATE, false);
+        this.similaritySearchDVS = getOptionalValue(defn, 
PROP_SIMILARITY_SEARCH_DENSE_VECTOR_SIZE,
+                SIMILARITY_SEARCH_DENSE_VECTOR_SIZE_DEFAULT);
         this.nonRelativeName = determineNonRelativeName();
         this.ancestors = computeAncestors(name);
         this.facet = getOptionalValueIfIndexed(defn, 
FulltextIndexConstants.PROP_FACETS, false);
@@ -216,6 +222,15 @@ public class PropertyDefinition {
     }
 
     /**
+     * Returns size of dense vector used for similarity search using this 
index.
+     * @return dense vector size
+     */
+    public int getSimilaritySearchDenseVectorSize() {
+        return similaritySearchDVS;
+    }
+
+
+    /**
      * Returns the property type. If no explicit type is defined the default 
is assumed
      * to be {@link PropertyType#STRING}
      *

Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndex.java?rev=1882970&r1=1882969&r2=1882970&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndex.java
 Thu Oct 29 16:23:30 2020
@@ -82,7 +82,7 @@ public abstract class FulltextIndex impl
 
     protected abstract Predicate<NodeState> getIndexDefinitionPredicate();
 
-    protected abstract String getFulltextRequestString(IndexPlan plan, 
IndexNode indexNode);
+    protected abstract String getFulltextRequestString(IndexPlan plan, 
IndexNode indexNode, NodeState rootState);
 
     /**
      * Whether replaced indexes (that is, if a new version of the index is
@@ -153,7 +153,7 @@ public abstract class FulltextIndex impl
                     .append("(")
                     .append(path)
                     .append(") ");
-            sb.append(getFulltextRequestString(plan, index));
+            sb.append(getFulltextRequestString(plan, index, root));
             if (plan.getSortOrder() != null && !plan.getSortOrder().isEmpty()) 
{
                 sb.append(" ordering:").append(plan.getSortOrder());
             }

Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java?rev=1882970&r1=1882969&r2=1882970&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java
 Thu Oct 29 16:23:30 2020
@@ -52,6 +52,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEPRECATED;
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_TAGS;
 import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.FIELD_BOOST;
+import static 
org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROP_SIMILARITY_SEARCH_DENSE_VECTOR_SIZE;
 import static 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 
 /**
@@ -460,6 +461,11 @@ public class IndexDefinitionBuilder {
             return this;
         }
 
+        public PropertyRule similaritySearchDenseVectorSize(int size) {
+            propTree.setProperty(PROP_SIMILARITY_SEARCH_DENSE_VECTOR_SIZE, 
size);
+            return this;
+        }
+
         public PropertyRule valuePattern(String valuePattern) {
             propTree.setProperty(IndexConstants.VALUE_PATTERN, valuePattern);
             return this;


Reply via email to