You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ho...@apache.org on 2024/06/18 20:32:33 UTC
(solr) branch SOLR-17335 updated (4b137703ed2 -> 7fca0be147e)
This is an automated email from the ASF dual-hosted git repository.
hossman pushed a change to branch SOLR-17335
in repository https://gitbox.apache.org/repos/asf/solr.git
from 4b137703ed2 SOLR-17335: New 'vecSim' QParser
new ef82d2cfdae Rename "vec sim" -> "vector similarity"
new b3009beb76a Rename min(T|R) -> min(Traverse|Return)
new de4536cf738 Fix typos
new 7fca0be147e Tidy
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../java/org/apache/solr/search/QParserPlugin.java | 4 +-
...imQParser.java => VectorSimilarityQParser.java} | 16 +-
...gin.java => VectorSimilarityQParserPlugin.java} | 6 +-
.../org/apache/solr/search/QueryEqualityTest.java | 12 +-
...rTest.java => VectorSimilarityQParserTest.java} | 222 ++++++++++++++-------
.../query-guide/pages/dense-vector-search.adoc | 4 +-
6 files changed, 176 insertions(+), 88 deletions(-)
rename solr/core/src/java/org/apache/solr/search/neural/{VecSimQParser.java => VectorSimilarityQParser.java} (83%)
rename solr/core/src/java/org/apache/solr/search/neural/{VecSimQParserPlugin.java => VectorSimilarityQParserPlugin.java} (86%)
rename solr/core/src/test/org/apache/solr/search/neural/{VecSimQParserTest.java => VectorSimilarityQParserTest.java} (76%)
(solr) 04/04: Tidy
Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
hossman pushed a commit to branch SOLR-17335
in repository https://gitbox.apache.org/repos/asf/solr.git
commit 7fca0be147e4d159dff510455c091294290e57a9
Author: Chris Hostetter <ho...@apache.org>
AuthorDate: Tue Jun 18 12:38:29 2024 -0700
Tidy
---
.../search/neural/VectorSimilarityQParserTest.java | 154 ++++++++++++++++-----
1 file changed, 121 insertions(+), 33 deletions(-)
diff --git a/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java b/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
index ff6af589cc0..cf6aeb65973 100644
--- a/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
@@ -151,7 +151,11 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
String vectorToSearch = "[1.0, 2.0, 3.0, 4.0]";
assertQ(
- req(CommonParams.Q, "{!vectorSimilarity f=vector2 minReturn=0.8}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector2 minReturn=0.8}" + vectorToSearch,
+ "fl",
+ "id"),
"//result[@numFound='3']",
"//result/doc[1]/str[@name='id'][.='11']",
"//result/doc[2]/str[@name='id'][.='13']",
@@ -249,14 +253,22 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
assertQEx(
"missing vector to search should throw Exception",
"incorrect vector dimension. The vector value has size 3 while it is expected a vector with size 4",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4,,]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector dimension. The vector value has size 2 while it is expected a vector with size 4",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -266,35 +278,55 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, 3.5, 6.4";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "2.0, 4.4, 3.5, 6.4]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, 3.5, stringElement]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector element: ' stringElement'. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, , ]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector element: ' '. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch,
+ "fl",
+ "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -303,7 +335,11 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
String vectorToSearch = "[1.0, 2.0, 3.0, 4.0]";
assertQ(
- req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch, "fl", "id"),
+ req(
+ CommonParams.Q,
+ "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch,
+ "fl",
+ "id"),
"//result[@numFound='8']",
"//result/doc[1]/str[@name='id'][.='1']",
"//result/doc[2]/str[@name='id'][.='4']",
@@ -344,7 +380,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
CommonParams.Q,
"id:(3 4 7 2)",
"fq",
- "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:(1 4 7 8 9)'}" + vectorToSearch,
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:(1 4 7 8 9)'}"
+ + vectorToSearch,
"fq",
"id:(4 20 7)",
"fl",
@@ -385,7 +422,12 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
"//result/doc[3]/str[@name='id'][.='7']");
// minReturn -> 1,4,2,10,3,7,5,6 + '8' -> fq -> 4,2,7,8
assertQ(
- req(common, "fq", filt, "q", "id:8^=0.01 OR {!vectorSimilarity f=vector minReturn=0.8 v=$vec}"),
+ req(
+ common,
+ "fq",
+ filt,
+ "q",
+ "id:8^=0.01 OR {!vectorSimilarity f=vector minReturn=0.8 v=$vec}"),
"//result[@numFound='4']",
"//result/doc[1]/str[@name='id'][.='4']",
"//result/doc[2]/str[@name='id'][.='2']",
@@ -430,7 +472,9 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
"fq",
"id:(1 9 20 3 5 7 8)",
"q",
- "id:8^=100 OR {!vectorSimilarity f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
+ "id:8^=100 OR {!vectorSimilarity f=vector minReturn=0.8 preFilter='"
+ + filt
+ + "' v=$vec}"),
"//result[@numFound='3']",
"//result/doc[1]/str[@name='id'][.='8']",
"//result/doc[2]/str[@name='id'][.='3']",
@@ -462,11 +506,19 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
final String filt = "id:(1 2 7 20)";
for (SolrQueryRequest req :
Arrays.asList(
- req(common, "q", "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch, "fq", filt),
req(
common,
"q",
- "{!vectorSimilarity f=vector preFilter=\"" + filt + "\" minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch,
+ "fq",
+ filt),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector preFilter=\""
+ + filt
+ + "\" minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
@@ -515,7 +567,10 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vectorSimilarity f=vector preFilter=$fx preFilter=$fy " + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector preFilter=$fx preFilter=$fy "
+ + minR
+ + "}"
+ + vectorToSearch,
"fx",
fx,
"fy",
@@ -547,7 +602,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
// shouldn't matter if global fq w/tag even exists, usage is an error
req(
"q",
- "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' includeTags=xxx}" + vectorToSearch),
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' includeTags=xxx}"
+ + vectorToSearch),
SolrException.ErrorCode.BAD_REQUEST);
assertQEx(
"vecSim preFilter localparm incompatible with include/exclude localparams",
@@ -555,7 +611,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
// shouldn't matter if global fq w/tag even exists, usage is an error
req(
"q",
- "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' excludeTags=xxx}" + vectorToSearch),
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' excludeTags=xxx}"
+ + vectorToSearch),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -578,7 +635,9 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
// localparam prefiltering, global fqs applied independently
assertQ(
req(
- "q", "{!vectorSimilarity f=vector preFilter='id:(3 4 9 2 7 8)' minReturn=0.8}" + vectorToSearch,
+ "q",
+ "{!vectorSimilarity f=vector preFilter='id:(3 4 9 2 7 8)' minReturn=0.8}"
+ + vectorToSearch,
"fq", "-id:4",
"fl", "id"),
"//result[@numFound='3']",
@@ -603,11 +662,15 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
// default behavior is all fq's pre-filter,
req(common, "q", "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly requesting both fq params
- req(common, "q", "{!vectorSimilarity f=vector includeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=aa excludeTags='' minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags='' minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
@@ -616,11 +679,13 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=xx includeTags=yy minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=xx includeTags=yy minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
+ "{!vectorSimilarity f=vector includeTags=xx,yy,bogus minReturn=0.8}"
+ + vectorToSearch))) {
assertQ(
req,
"//result[@numFound='3']",
@@ -645,16 +710,29 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
for (SolrQueryRequest req :
Arrays.asList(
// explicit local empty preFilter
- req(common, "q", "{!vectorSimilarity f=vector preFilter='' minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector preFilter='' minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly including none of the global fq params
- req(common, "q", "{!vectorSimilarity f=vector includeTags='' minReturn=0.8}" + vectorToSearch),
- req(common, "q", "{!vectorSimilarity f=vector includeTags=bogus minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector includeTags='' minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector includeTags=bogus minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly excluding all of the global fq params
- req(common, "q", "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=aa excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags=aa minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
@@ -665,12 +743,19 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
"q",
"{!vectorSimilarity f=vector includeTags=xx,yy excludeTags=aa minReturn=0.8}"
+ vectorToSearch),
- req(common, "q", "{!vectorSimilarity f=vector excludeTags=xx,yy minReturn=0.8}" + vectorToSearch),
- req(common, "q", "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vectorSimilarity f=vector excludeTags=xx excludeTags=yy minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector excludeTags=xx,yy minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(
+ common,
+ "q",
+ "{!vectorSimilarity f=vector excludeTags=xx excludeTags=yy minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
@@ -679,7 +764,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vectorSimilarity f=vector excludeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
+ "{!vectorSimilarity f=vector excludeTags=xx,yy,bogus minReturn=0.8}"
+ + vectorToSearch))) {
assertQ(req, "//result[@numFound='1']", "//result/doc[1]/str[@name='id'][.='7']");
}
}
@@ -706,7 +792,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=yy excludeTags='' minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=yy excludeTags='' minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
@@ -714,7 +801,8 @@ public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vectorSimilarity f=vector includeTags=yy excludeTags=xx minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=yy excludeTags=xx minReturn=0.8}"
+ + vectorToSearch),
req(
common,
"q",
(solr) 01/04: Rename "vec sim" -> "vector similarity"
Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
hossman pushed a commit to branch SOLR-17335
in repository https://gitbox.apache.org/repos/asf/solr.git
commit ef82d2cfdae2533aa88389deb21c9c0888e8a57a
Author: Chris Hostetter <ho...@apache.org>
AuthorDate: Tue Jun 18 11:47:17 2024 -0700
Rename "vec sim" -> "vector similarity"
---
.../java/org/apache/solr/search/QParserPlugin.java | 4 +-
...imQParser.java => VectorSimilarityQParser.java} | 4 +-
...gin.java => VectorSimilarityQParserPlugin.java} | 6 +-
.../org/apache/solr/search/QueryEqualityTest.java | 12 +-
...rTest.java => VectorSimilarityQParserTest.java} | 134 ++++++++++-----------
5 files changed, 80 insertions(+), 80 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/search/QParserPlugin.java b/solr/core/src/java/org/apache/solr/search/QParserPlugin.java
index 544ecc5540a..8146c585cf0 100644
--- a/solr/core/src/java/org/apache/solr/search/QParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/QParserPlugin.java
@@ -31,7 +31,7 @@ import org.apache.solr.search.join.HashRangeQParserPlugin;
import org.apache.solr.search.mlt.MLTContentQParserPlugin;
import org.apache.solr.search.mlt.MLTQParserPlugin;
import org.apache.solr.search.neural.KnnQParserPlugin;
-import org.apache.solr.search.neural.VecSimQParserPlugin;
+import org.apache.solr.search.neural.VectorSimilarityQParserPlugin;
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
public abstract class QParserPlugin implements NamedListInitializedPlugin, SolrInfoBean {
@@ -90,7 +90,7 @@ public abstract class QParserPlugin implements NamedListInitializedPlugin, SolrI
map.put(HashRangeQParserPlugin.NAME, new HashRangeQParserPlugin());
map.put(RankQParserPlugin.NAME, new RankQParserPlugin());
map.put(KnnQParserPlugin.NAME, new KnnQParserPlugin());
- map.put(VecSimQParserPlugin.NAME, new VecSimQParserPlugin());
+ map.put(VectorSimilarityQParserPlugin.NAME, new VectorSimilarityQParserPlugin());
standardPlugins = Collections.unmodifiableMap(map);
}
diff --git a/solr/core/src/java/org/apache/solr/search/neural/VecSimQParser.java b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
similarity index 96%
rename from solr/core/src/java/org/apache/solr/search/neural/VecSimQParser.java
rename to solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
index 2dab7bd7a10..4005feada81 100644
--- a/solr/core/src/java/org/apache/solr/search/neural/VecSimQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
@@ -28,7 +28,7 @@ import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SyntaxError;
import org.apache.solr.util.vector.DenseVectorParser;
-public class VecSimQParser extends AbstractVectorQParserBase {
+public class VectorSimilarityQParser extends AbstractVectorQParserBase {
// retrieve the top results based on the distance similarity function thresholds
static final String MIN_RETURN = "minReturn";
@@ -36,7 +36,7 @@ public class VecSimQParser extends AbstractVectorQParserBase {
static final float DEFAULT_MIN_TRAVERSE = Float.NEGATIVE_INFINITY;
- public VecSimQParser(
+ public VectorSimilarityQParser(
String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
super(qstr, localParams, params, req);
}
diff --git a/solr/core/src/java/org/apache/solr/search/neural/VecSimQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParserPlugin.java
similarity index 86%
rename from solr/core/src/java/org/apache/solr/search/neural/VecSimQParserPlugin.java
rename to solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParserPlugin.java
index 49a1ea9a192..4109d0df388 100644
--- a/solr/core/src/java/org/apache/solr/search/neural/VecSimQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParserPlugin.java
@@ -22,12 +22,12 @@ import org.apache.solr.search.QParser;
import org.apache.solr.search.QParserPlugin;
/** A neural query parser to run min-similarity search on Dense Vector fields. */
-public class VecSimQParserPlugin extends QParserPlugin {
- public static final String NAME = "vecSim";
+public class VectorSimilarityQParserPlugin extends QParserPlugin {
+ public static final String NAME = "vectorSimilarity";
@Override
public QParser createParser(
String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- return new VecSimQParser(qstr, localParams, params, req);
+ return new VectorSimilarityQParser(qstr, localParams, params, req);
}
}
diff --git a/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java b/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
index 1fe5eee3247..6e675771560 100644
--- a/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
+++ b/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
@@ -1476,7 +1476,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
assertU(adoc(doc));
assertU(commit());
- final String common = "!vecSim minReturn=0.3 f=vector";
+ final String common = "!vectorSimilarity minReturn=0.3 f=vector";
final String qvec = "[1.0,2.0,3.0,4.0]";
try (SolrQueryRequest req0 = req()) {
@@ -1484,7 +1484,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
// no filters
final Query fqNull =
assertQueryEqualsAndReturn(
- "vecSim",
+ "vectorSimilarity",
req0,
"{" + common + "}" + qvec,
"{" + common + " minTraverse='-Infinity'}" + qvec,
@@ -1495,7 +1495,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
// either global fq, or (same) preFilter as localparam
final Query fqOne =
assertQueryEqualsAndReturn(
- "vecSim",
+ "vectorSimilarity",
req1,
"{" + common + "}" + qvec,
"{" + common + " includeTags=t1}" + qvec,
@@ -1508,7 +1508,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
// override global fq with local param to use different preFilter
final Query fqOneOverride =
assertQueryEqualsAndReturn(
- "vecSim",
+ "vectorSimilarity",
req2,
"{" + common + " preFilter='id:1'}" + qvec,
"{" + common + " preFilter=$xxx}" + qvec);
@@ -1517,7 +1517,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
// override global fq with local param to use no preFilters
final Query fqNullOverride =
assertQueryEqualsAndReturn(
- "vecSim",
+ "vectorSimilarity",
req2,
"{" + common + " preFilter=''}" + qvec,
"{" + common + " excludeTags=t2}" + qvec,
@@ -1530,7 +1530,7 @@ public class QueryEqualityTest extends SolrTestCaseJ4 {
// global post-filter fq should always be ignored
final Query fqPostFilter =
assertQueryEqualsAndReturn(
- "vecSim",
+ "vectorSimilarity",
reqPostFilter,
"{" + common + "}" + qvec,
"{" + common + " includeTags=post}" + qvec);
diff --git a/solr/core/src/test/org/apache/solr/search/neural/VecSimQParserTest.java b/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
similarity index 79%
rename from solr/core/src/test/org/apache/solr/search/neural/VecSimQParserTest.java
rename to solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
index 9a7f68521cb..ff6af589cc0 100644
--- a/solr/core/src/test/org/apache/solr/search/neural/VecSimQParserTest.java
+++ b/solr/core/src/test/org/apache/solr/search/neural/VectorSimilarityQParserTest.java
@@ -30,7 +30,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-public class VecSimQParserTest extends SolrTestCaseJ4 {
+public class VectorSimilarityQParserTest extends SolrTestCaseJ4 {
String IDField = "id";
String vectorField = "vector";
String vectorField2 = "vector2";
@@ -120,7 +120,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"Incorrect vector field type should throw Exception",
"only DenseVectorField is compatible with ",
- req(CommonParams.Q, "{!vecSim f=id}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=id}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -131,7 +131,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"Undefined vector field should throw Exception",
"undefined field: \"notExistent\"",
- req(CommonParams.Q, "{!vecSim f=notExistent}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=notExistent}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -142,7 +142,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"missing vector field should throw Exception",
"the Dense Vector field 'f' is missing",
- req(CommonParams.Q, "{!vecSim}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -151,7 +151,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
String vectorToSearch = "[1.0, 2.0, 3.0, 4.0]";
assertQ(
- req(CommonParams.Q, "{!vecSim f=vector2 minReturn=0.8}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector2 minReturn=0.8}" + vectorToSearch, "fl", "id"),
"//result[@numFound='3']",
"//result/doc[1]/str[@name='id'][.='11']",
"//result/doc[2]/str[@name='id'][.='13']",
@@ -167,7 +167,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQ(
req(
CommonParams.Q,
- "{!vecSim f=vector_byte_encoding minReturn=" + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector_byte_encoding minReturn=" + minR + "}" + vectorToSearch,
"fl",
"id"),
"//result[@numFound='2']",
@@ -181,7 +181,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQ(
req(
CommonParams.Q,
- "{!vecSim f=vector_byte_encoding minReturn=" + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector_byte_encoding minReturn=" + minR + "}" + vectorToSearch,
"fl",
"id,score,vector_byte_encoding",
"indent",
@@ -200,7 +200,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"incorrect vector element: '8.3'. The expected format is:'[b1,b2..b3]' where each element b is a byte (-128 to 127)",
req(
CommonParams.Q,
- "{!vecSim f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
+ "{!vectorSimilarity f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
"fl",
"id"),
SolrException.ErrorCode.BAD_REQUEST);
@@ -216,7 +216,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"incorrect vector element: ' -129'. The expected format is:'[b1,b2..b3]' where each element b is a byte (-128 to 127)",
req(
CommonParams.Q,
- "{!vecSim f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
+ "{!vectorSimilarity f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
"fl",
"id"),
SolrException.ErrorCode.BAD_REQUEST);
@@ -228,7 +228,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"incorrect vector element: ' 156'. The expected format is:'[b1,b2..b3]' where each element b is a byte (-128 to 127)",
req(
CommonParams.Q,
- "{!vecSim f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
+ "{!vectorSimilarity f=vector_byte_encoding minReturn=0.0}" + vectorToSearch,
"fl",
"id"),
SolrException.ErrorCode.BAD_REQUEST);
@@ -239,7 +239,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"missing vector to search should throw Exception",
"the Dense Vector value 'v' to search is missing",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}", "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}", "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -249,14 +249,14 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"missing vector to search should throw Exception",
"incorrect vector dimension. The vector value has size 3 while it is expected a vector with size 4",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4,,]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector dimension. The vector value has size 2 while it is expected a vector with size 4",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -266,35 +266,35 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, 3.5, 6.4";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "2.0, 4.4, 3.5, 6.4]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector format. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, 3.5, stringElement]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector element: ' stringElement'. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
vectorToSearch = "[2.0, 4.4, , ]";
assertQEx(
"incorrect vector to search should throw Exception",
"incorrect vector element: ' '. The expected format is:'[f1,f2..f3]' where each element f is a float",
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.0}" + vectorToSearch, "fl", "id"),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -303,7 +303,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
String vectorToSearch = "[1.0, 2.0, 3.0, 4.0]";
assertQ(
- req(CommonParams.Q, "{!vecSim f=vector minReturn=0.8}" + vectorToSearch, "fl", "id"),
+ req(CommonParams.Q, "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch, "fl", "id"),
"//result[@numFound='8']",
"//result/doc[1]/str[@name='id'][.='1']",
"//result/doc[2]/str[@name='id'][.='4']",
@@ -325,7 +325,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
CommonParams.Q,
"id:(3 4 9 2)",
"fq",
- "{!vecSim f=vector minReturn=0.8}" + vectorToSearch,
+ "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch,
"fq",
"id:(4 20 9)",
"fl",
@@ -344,7 +344,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
CommonParams.Q,
"id:(3 4 7 2)",
"fq",
- "{!vecSim f=vector minReturn=0.8 preFilter='id:(1 4 7 8 9)'}" + vectorToSearch,
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:(1 4 7 8 9)'}" + vectorToSearch,
"fq",
"id:(4 20 7)",
"fl",
@@ -360,10 +360,10 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
for (String fq :
Arrays.asList(
- "{!vecSim f=vector minReturn=0.8 includeTags=xxx}" + vectorToSearch,
- "{!vecSim f=vector minReturn=0.8 excludeTags=xxx}" + vectorToSearch)) {
+ "{!vectorSimilarity f=vector minReturn=0.8 includeTags=xxx}" + vectorToSearch,
+ "{!vectorSimilarity f=vector minReturn=0.8 excludeTags=xxx}" + vectorToSearch)) {
assertQEx(
- "fq={!vecSim...} incompatible with include/exclude localparams",
+ "fq={!vectorSimilarity...} incompatible with include/exclude localparams",
"used as a filter does not support",
req("q", "*:*", "fq", fq),
SolrException.ErrorCode.BAD_REQUEST);
@@ -378,14 +378,14 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
// When vecSim parser is a subquery, it should not pre-filter on any global fq params
// minReturn -> 1,4,2,10,3,7,5,6 -> fq -> 4,2,7
assertQ(
- req(common, "fq", filt, "q", "*:* AND {!vecSim f=vector minReturn=0.8 v=$vec}"),
+ req(common, "fq", filt, "q", "*:* AND {!vectorSimilarity f=vector minReturn=0.8 v=$vec}"),
"//result[@numFound='3']",
"//result/doc[1]/str[@name='id'][.='4']",
"//result/doc[2]/str[@name='id'][.='2']",
"//result/doc[3]/str[@name='id'][.='7']");
// minReturn -> 1,4,2,10,3,7,5,6 + '8' -> fq -> 4,2,7,8
assertQ(
- req(common, "fq", filt, "q", "id:8^=0.01 OR {!vecSim f=vector minReturn=0.8 v=$vec}"),
+ req(common, "fq", filt, "q", "id:8^=0.01 OR {!vectorSimilarity f=vector minReturn=0.8 v=$vec}"),
"//result[@numFound='4']",
"//result/doc[1]/str[@name='id'][.='4']",
"//result/doc[2]/str[@name='id'][.='2']",
@@ -404,7 +404,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "*:* AND {!vecSim f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
+ "*:* AND {!vectorSimilarity f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
"//result[@numFound='4']",
"//result/doc[1]/str[@name='id'][.='4']",
"//result/doc[2]/str[@name='id'][.='2']",
@@ -419,7 +419,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"fq",
"id:(1 9 20 3 5 7 8)",
"q",
- "*:* AND {!vecSim f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
+ "*:* AND {!vectorSimilarity f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
"//result[@numFound='2']",
"//result/doc[1]/str[@name='id'][.='3']",
"//result/doc[2]/str[@name='id'][.='7']");
@@ -430,7 +430,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"fq",
"id:(1 9 20 3 5 7 8)",
"q",
- "id:8^=100 OR {!vecSim f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
+ "id:8^=100 OR {!vectorSimilarity f=vector minReturn=0.8 preFilter='" + filt + "' v=$vec}"),
"//result[@numFound='3']",
"//result/doc[1]/str[@name='id'][.='8']",
"//result/doc[2]/str[@name='id'][.='3']",
@@ -443,8 +443,8 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
for (String subq :
Arrays.asList(
- "{!vecSim f=vector minReturn=0.8 includeTags=xxx v=$vec}",
- "{!vecSim f=vector minReturn=0.8 excludeTags=xxx v=$vec}")) {
+ "{!vectorSimilarity f=vector minReturn=0.8 includeTags=xxx v=$vec}",
+ "{!vectorSimilarity f=vector minReturn=0.8 excludeTags=xxx v=$vec}")) {
assertQEx(
"vecSim as subquery incompatible with include/exclude localparams",
"used as a sub-query does not support",
@@ -462,15 +462,15 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
final String filt = "id:(1 2 7 20)";
for (SolrQueryRequest req :
Arrays.asList(
- req(common, "q", "{!vecSim f=vector minReturn=0.8}" + vectorToSearch, "fq", filt),
+ req(common, "q", "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch, "fq", filt),
req(
common,
"q",
- "{!vecSim f=vector preFilter=\"" + filt + "\" minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector preFilter=\"" + filt + "\" minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector preFilter=$my_filt minReturn=0.8}" + vectorToSearch,
+ "{!vectorSimilarity f=vector preFilter=$my_filt minReturn=0.8}" + vectorToSearch,
"my_filt",
filt))) {
assertQ(
@@ -496,7 +496,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vecSim f=vector " + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector " + minR + "}" + vectorToSearch,
"fq",
fx,
"fq",
@@ -504,7 +504,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vecSim f=vector preFilter=\""
+ "{!vectorSimilarity f=vector preFilter=\""
+ fx
+ "\" preFilter=\""
+ fy
@@ -515,7 +515,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vecSim f=vector preFilter=$fx preFilter=$fy " + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector preFilter=$fx preFilter=$fy " + minR + "}" + vectorToSearch,
"fx",
fx,
"fy",
@@ -523,7 +523,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vecSim f=vector preFilter=$multi_filt " + minR + "}" + vectorToSearch,
+ "{!vectorSimilarity f=vector preFilter=$multi_filt " + minR + "}" + vectorToSearch,
"multi_filt",
fx,
"multi_filt",
@@ -547,7 +547,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
// shouldn't matter if global fq w/tag even exists, usage is an error
req(
"q",
- "{!vecSim f=vector minReturn=0.8 preFilter='id:1' includeTags=xxx}" + vectorToSearch),
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' includeTags=xxx}" + vectorToSearch),
SolrException.ErrorCode.BAD_REQUEST);
assertQEx(
"vecSim preFilter localparm incompatible with include/exclude localparams",
@@ -555,7 +555,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
// shouldn't matter if global fq w/tag even exists, usage is an error
req(
"q",
- "{!vecSim f=vector minReturn=0.8 preFilter='id:1' excludeTags=xxx}" + vectorToSearch),
+ "{!vectorSimilarity f=vector minReturn=0.8 preFilter='id:1' excludeTags=xxx}" + vectorToSearch),
SolrException.ErrorCode.BAD_REQUEST);
}
@@ -566,7 +566,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
// trivial case: empty preFilter localparam means no pre-filtering
assertQ(
req(
- "q", "{!vecSim f=vector preFilter='' minReturn=0.8}" + vectorToSearch,
+ "q", "{!vectorSimilarity f=vector preFilter='' minReturn=0.8}" + vectorToSearch,
"fq", "-id:4",
"fl", "id"),
"//result[@numFound='7']",
@@ -578,7 +578,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
// localparam prefiltering, global fqs applied independently
assertQ(
req(
- "q", "{!vecSim f=vector preFilter='id:(3 4 9 2 7 8)' minReturn=0.8}" + vectorToSearch,
+ "q", "{!vectorSimilarity f=vector preFilter='id:(3 4 9 2 7 8)' minReturn=0.8}" + vectorToSearch,
"fq", "-id:4",
"fl", "id"),
"//result[@numFound='3']",
@@ -601,26 +601,26 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
for (SolrQueryRequest req :
Arrays.asList(
// default behavior is all fq's pre-filter,
- req(common, "q", "{!vecSim f=vector minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly requesting both fq params
- req(common, "q", "{!vecSim f=vector includeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector includeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=aa excludeTags='' minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags='' minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=aa excludeTags=bogus minReturn=0.8}"
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags=bogus minReturn=0.8}"
+ vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=xx includeTags=yy minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=xx includeTags=yy minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
+ "{!vectorSimilarity f=vector includeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
assertQ(
req,
"//result[@numFound='3']",
@@ -645,41 +645,41 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
for (SolrQueryRequest req :
Arrays.asList(
// explicit local empty preFilter
- req(common, "q", "{!vecSim f=vector preFilter='' minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector preFilter='' minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly including none of the global fq params
- req(common, "q", "{!vecSim f=vector includeTags='' minReturn=0.8}" + vectorToSearch),
- req(common, "q", "{!vecSim f=vector includeTags=bogus minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector includeTags='' minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector includeTags=bogus minReturn=0.8}" + vectorToSearch),
// diff ways of explicitly excluding all of the global fq params
- req(common, "q", "{!vecSim f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=aa excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=aa excludeTags=xx,yy minReturn=0.8}"
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags=xx,yy minReturn=0.8}"
+ vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=xx,yy excludeTags=aa minReturn=0.8}"
+ "{!vectorSimilarity f=vector includeTags=xx,yy excludeTags=aa minReturn=0.8}"
+ vectorToSearch),
- req(common, "q", "{!vecSim f=vector excludeTags=xx,yy minReturn=0.8}" + vectorToSearch),
- req(common, "q", "{!vecSim f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector excludeTags=xx,yy minReturn=0.8}" + vectorToSearch),
+ req(common, "q", "{!vectorSimilarity f=vector excludeTags=aa minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector excludeTags=xx excludeTags=yy minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector excludeTags=xx excludeTags=yy minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector excludeTags=xx excludeTags=yy,bogus minReturn=0.8}"
+ "{!vectorSimilarity f=vector excludeTags=xx excludeTags=yy,bogus minReturn=0.8}"
+ vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector excludeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
+ "{!vectorSimilarity f=vector excludeTags=xx,yy,bogus minReturn=0.8}" + vectorToSearch))) {
assertQ(req, "//result[@numFound='1']", "//result/doc[1]/str[@name='id'][.='7']");
}
}
@@ -702,23 +702,23 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
req(
common,
"q",
- "{!vecSim f=vector includeTags=yy,bogus minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=yy,bogus minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=yy excludeTags='' minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=yy excludeTags='' minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector excludeTags=xx,bogus minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector excludeTags=xx,bogus minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=yy excludeTags=xx minReturn=0.8}" + vectorToSearch),
+ "{!vectorSimilarity f=vector includeTags=yy excludeTags=xx minReturn=0.8}" + vectorToSearch),
req(
common,
"q",
- "{!vecSim f=vector includeTags=aa excludeTags=xx minReturn=0.8}"
+ "{!vectorSimilarity f=vector includeTags=aa excludeTags=xx minReturn=0.8}"
+ vectorToSearch))) {
assertQ(req, "//result[@numFound='1']", "//result/doc[1]/str[@name='id'][.='7']");
}
@@ -735,7 +735,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
params(
"fl", "id",
"indent", "true",
- "q", "{!vecSim f=vector minReturn=0.9 excludeTags=facet_click v=$vec}",
+ "q", "{!vectorSimilarity f=vector minReturn=0.9 excludeTags=facet_click v=$vec}",
"vec", vectorToSearch,
// mimicing "inStock:true"
"fq", "-id:(2 3)",
@@ -802,7 +802,7 @@ public class VecSimQParserTest extends SolrTestCaseJ4 {
"rq",
"{!rerank reRankQuery=$rqq reRankDocs=4 reRankWeight=1}",
"rqq",
- "{!vecSim f=vector minReturn=0.8}" + vectorToSearch,
+ "{!vectorSimilarity f=vector minReturn=0.8}" + vectorToSearch,
"fl",
"id"),
"//result[@numFound='4']",
(solr) 03/04: Fix typos
Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
hossman pushed a commit to branch SOLR-17335
in repository https://gitbox.apache.org/repos/asf/solr.git
commit de4536cf738b35d3470d2f8caa2f3fa911fe3297
Author: Chris Hostetter <ho...@apache.org>
AuthorDate: Tue Jun 18 11:55:15 2024 -0700
Fix typos
---
.../java/org/apache/solr/search/neural/VectorSimilarityQParser.java | 2 +-
.../solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
index 164cafc5192..e3ec2f242f7 100644
--- a/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
@@ -52,7 +52,7 @@ public class VectorSimilarityQParser extends AbstractVectorQParserBase {
if (null == minReturn) {
throw new SolrException(
SolrException.ErrorCode.BAD_REQUEST,
- MIN_RETURN + " is requried to use Vector Similarity QParser");
+ MIN_RETURN + " is required to use Vector Similarity QParser");
}
final DenseVectorParser vectorBuilder =
diff --git a/solr/solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc b/solr/solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc
index df761eeaf8d..d4ad9756176 100644
--- a/solr/solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc
+++ b/solr/solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc
@@ -238,7 +238,7 @@ client.add(Arrays.asList(d1, d2));
== Query Time
-Apache Solr provides two query parsers that work with dense vector fields, that each support differnet ways of matching documents based on vector similarity: The `knn` query parser, and the `vecSim` query parser.
+Apache Solr provides two query parsers that work with dense vector fields, that each support different ways of matching documents based on vector similarity: The `knn` query parser, and the `vecSim` query parser.
Both parsers return scores for retrieved documents that is the approximate distance to the target vector (defined by the similarityFunction configured at indexing time) and both support "Pre-Filtering" the document graph to reduce the number of candidate vectors evaluated (with out needing to compute their vector similarity distances).
@@ -348,7 +348,7 @@ The `preFilter` parameter can be specified explicitly to reduce the number of ca
[source,text]
?q={!vecSim f=vector minReturn=0.7 preFilter=inStock:true}[1.0, 2.0, 3.0, 4.0]
-In the above example, only documents matching the Pre-Filter `inStock:true` will be candidates for consideration when evaluating the `knn` search against the specified vector.
+In the above example, only documents matching the Pre-Filter `inStock:true` will be candidates for consideration when evaluating the `vecSim` search against the specified vector.
The `preFilter` parameter may be blank (ex: `preFilter=""`) to indicate that no Pre-Filtering should be performed; or it may be multi-valued -- either through repetition, or via duplicated xref:local-params.adoc#parameter-dereferencing[Parameter References].
(solr) 02/04: Rename min(T|R) -> min(Traverse|Return)
Posted by ho...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
hossman pushed a commit to branch SOLR-17335
in repository https://gitbox.apache.org/repos/asf/solr.git
commit b3009beb76ae4ad55ae4b0012e12ffefd904b926
Author: Chris Hostetter <ho...@apache.org>
AuthorDate: Tue Jun 18 11:51:47 2024 -0700
Rename min(T|R) -> min(Traverse|Return)
---
.../org/apache/solr/search/neural/VectorSimilarityQParser.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
index 4005feada81..164cafc5192 100644
--- a/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/neural/VectorSimilarityQParser.java
@@ -47,9 +47,9 @@ public class VectorSimilarityQParser extends AbstractVectorQParserBase {
final SchemaField schemaField = req.getCore().getLatestSchema().getField(fieldName);
final DenseVectorField denseVectorType = getCheckedFieldType(schemaField);
final String vectorToSearch = getVectorToSearch();
- final float minT = localParams.getFloat(MIN_TRAVERSE, DEFAULT_MIN_TRAVERSE);
- final Float minR = localParams.getFloat(MIN_RETURN);
- if (null == minR) {
+ final float minTraverse = localParams.getFloat(MIN_TRAVERSE, DEFAULT_MIN_TRAVERSE);
+ final Float minReturn = localParams.getFloat(MIN_RETURN);
+ if (null == minReturn) {
throw new SolrException(
SolrException.ErrorCode.BAD_REQUEST,
MIN_RETURN + " is requried to use Vector Similarity QParser");
@@ -62,10 +62,10 @@ public class VectorSimilarityQParser extends AbstractVectorQParserBase {
switch (vectorEncoding) {
case FLOAT32:
return new FloatVectorSimilarityQuery(
- fieldName, vectorBuilder.getFloatVector(), minT, minR, getFilterQuery());
+ fieldName, vectorBuilder.getFloatVector(), minTraverse, minReturn, getFilterQuery());
case BYTE:
return new ByteVectorSimilarityQuery(
- fieldName, vectorBuilder.getByteVector(), minT, minR, getFilterQuery());
+ fieldName, vectorBuilder.getByteVector(), minTraverse, minReturn, getFilterQuery());
default:
throw new SolrException(
SolrException.ErrorCode.SERVER_ERROR,