aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2024-03-29 10:16:07 +0100
committerJon Bratseth <bratseth@vespa.ai>2024-03-29 10:16:07 +0100
commit0f34d33fa2a0f4f0772868936e7f8c60e2074040 (patch)
tree152f5bc4bc6f8de803b5b7fad28fd60505e81680 /container-search/src/main/java
parent5279cf0b4ab52fb00078f7ba9d3155365691dcee (diff)
Improve embedder error messages
Diffstat (limited to 'container-search/src/main/java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/schema/internal/TensorConverter.java18
2 files changed, 11 insertions, 10 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
index e8350831381..f27e9bbc281 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
@@ -383,8 +383,7 @@ public class StemmingSearcher extends Searcher {
}
private int getWeight(Item block) {
- if (block instanceof AndSegmentItem
- && ((AndSegmentItem) block).getItemCount() > 0) {
+ if (block instanceof AndSegmentItem && ((AndSegmentItem) block).getItemCount() > 0) {
return ((AndSegmentItem) block).getItem(0).getWeight();
} else {
return block.getWeight();
diff --git a/container-search/src/main/java/com/yahoo/search/schema/internal/TensorConverter.java b/container-search/src/main/java/com/yahoo/search/schema/internal/TensorConverter.java
index 4f1fa44b982..4485e538e13 100644
--- a/container-search/src/main/java/com/yahoo/search/schema/internal/TensorConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/schema/internal/TensorConverter.java
@@ -70,10 +70,13 @@ public class TensorConverter {
embedder = requireEmbedder(embedderId);
argument = matcher.group(2);
} else if (embedders.isEmpty()) {
- throw new IllegalStateException("No embedders provided"); // should never happen
+ throw new IllegalArgumentException("No embedders provided"); // should never happen
} else if (embedders.size() > 1) {
- throw new IllegalArgumentException("Multiple embedders are provided but no embedder id is given. " +
- "Valid embedders are " + validEmbedders(embedders));
+ String usage = "Usage: embed(embedder-id, 'text'). " + embedderIds(embedders);
+ if (! argument.contains("\"") && ! argument.contains("'"))
+ throw new IllegalArgumentException("Multiple embedders are provided but the string to embed is not quoted. " + usage);
+ else
+ throw new IllegalArgumentException("Multiple embedders are provided but no embedder id is given. " + usage);
} else {
var entry = embedders.entrySet().stream().findFirst().get();
embedderId = entry.getKey();
@@ -84,8 +87,7 @@ public class TensorConverter {
private Embedder requireEmbedder(String embedderId) {
if ( ! embedders.containsKey(embedderId))
- throw new IllegalArgumentException("Can't find embedder '" + embedderId + "'. " +
- "Valid embedders are " + validEmbedders(embedders));
+ throw new IllegalArgumentException("Can't find embedder '" + embedderId + "'. " + embedderIds(embedders));
return embedders.get(embedderId);
}
@@ -108,11 +110,11 @@ public class TensorConverter {
return referencedValue.toString();
}
- private static String validEmbedders(Map<String, Embedder> embedders) {
+ private static String embedderIds(Map<String, Embedder> embedders) {
List<String> embedderIds = new ArrayList<>();
- embedders.forEach((key, value) -> embedderIds.add(key));
+ embedders.forEach((key, value) -> embedderIds.add("'" + key + "'"));
embedderIds.sort(null);
- return String.join(",", embedderIds);
+ return "Available embedder ids are " + String.join(", ", embedderIds) + ".";
}
}