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;
