Skip to content

Commit b7320a9

Browse files
committed
feat: introduce query target to near-media queries
1 parent b3d882b commit b7320a9

9 files changed

Lines changed: 519 additions & 37 deletions

File tree

src/main/java/io/weaviate/client6/v1/api/collections/query/AbstractQueryClient.java

Lines changed: 343 additions & 0 deletions
Large diffs are not rendered by default.

src/main/java/io/weaviate/client6/v1/api/collections/query/NearAudio.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearAudio(String audio, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearAudio(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearAudio of(String audio) {
15-
return of(audio, ObjectBuilder.identity());
17+
return of(Target.blob(audio));
1618
}
1719

1820
public static NearAudio of(String audio, Function<Builder, ObjectBuilder<NearAudio>> fn) {
19-
return fn.apply(new Builder(audio)).build();
21+
return of(Target.blob(audio), fn);
22+
}
23+
24+
public static NearAudio of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearAudio of(Target searchTarget, Function<Builder, ObjectBuilder<NearAudio>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearAudio(Builder builder) {
@@ -28,7 +38,7 @@ public NearAudio(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearAudio> {
31-
public Builder(String audio) {
41+
public Builder(Target audio) {
3242
super(audio);
3343
}
3444

@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearAudioSearch.Builder protoBuilder() {
5666
var nearAudio = WeaviateProtoBaseSearch.NearAudioSearch.newBuilder();
57-
nearAudio.setAudio(audio);
67+
if (searchTarget instanceof TextTarget text) {
68+
nearAudio.setAudio(text.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearAudio.setAudio(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearAudio.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearAudio.setCertainty(certainty);

src/main/java/io/weaviate/client6/v1/api/collections/query/NearDepth.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearDepth(String depth, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearDepth(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearDepth of(String depth) {
15-
return of(depth, ObjectBuilder.identity());
17+
return of(Target.blob(depth));
1618
}
1719

1820
public static NearDepth of(String depth, Function<Builder, ObjectBuilder<NearDepth>> fn) {
19-
return fn.apply(new Builder(depth)).build();
21+
return of(Target.blob(depth), fn);
22+
}
23+
24+
public static NearDepth of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearDepth of(Target searchTarget, Function<Builder, ObjectBuilder<NearDepth>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearDepth(Builder builder) {
@@ -28,8 +38,8 @@ public NearDepth(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearDepth> {
31-
public Builder(String depth) {
32-
super(depth);
41+
public Builder(Target searchTarget) {
42+
super(searchTarget);
3343
}
3444

3545
@Override
@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearDepthSearch.Builder protoBuilder() {
5666
var nearDepth = WeaviateProtoBaseSearch.NearDepthSearch.newBuilder();
57-
nearDepth.setDepth(depth);
67+
if (searchTarget instanceof TextTarget depth) {
68+
nearDepth.setDepth(depth.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearDepth.setDepth(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearDepth.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearDepth.setCertainty(certainty);

src/main/java/io/weaviate/client6/v1/api/collections/query/NearImage.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearImage(String image, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearImage(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearImage of(String image) {
15-
return of(image, ObjectBuilder.identity());
17+
return of(Target.blob(image));
1618
}
1719

1820
public static NearImage of(String image, Function<Builder, ObjectBuilder<NearImage>> fn) {
19-
return fn.apply(new Builder(image)).build();
21+
return of(Target.blob(image), fn);
22+
}
23+
24+
public static NearImage of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearImage of(Target searchTarget, Function<Builder, ObjectBuilder<NearImage>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearImage(Builder builder) {
@@ -28,8 +38,8 @@ public NearImage(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearImage> {
31-
public Builder(String image) {
32-
super(image);
41+
public Builder(Target searchTarget) {
42+
super(searchTarget);
3343
}
3444

3545
@Override
@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearImageSearch.Builder protoBuilder() {
5666
var nearImage = WeaviateProtoBaseSearch.NearImageSearch.newBuilder();
57-
nearImage.setImage(image);
67+
if (searchTarget instanceof TextTarget image) {
68+
nearImage.setImage(image.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearImage.setImage(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearImage.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearImage.setCertainty(certainty);

src/main/java/io/weaviate/client6/v1/api/collections/query/NearImu.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearImu(String imu, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearImu(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearImu of(String imu) {
15-
return of(imu, ObjectBuilder.identity());
17+
return of(Target.blob(imu));
1618
}
1719

1820
public static NearImu of(String imu, Function<Builder, ObjectBuilder<NearImu>> fn) {
19-
return fn.apply(new Builder(imu)).build();
21+
return of(Target.blob(imu), fn);
22+
}
23+
24+
public static NearImu of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearImu of(Target searchTarget, Function<Builder, ObjectBuilder<NearImu>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearImu(Builder builder) {
@@ -28,8 +38,8 @@ public NearImu(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearImu> {
31-
public Builder(String imu) {
32-
super(imu);
41+
public Builder(Target searchTarget) {
42+
super(searchTarget);
3343
}
3444

3545
@Override
@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearIMUSearch.Builder protoBuilder() {
5666
var nearImu = WeaviateProtoBaseSearch.NearIMUSearch.newBuilder();
57-
nearImu.setImu(imu);
67+
if (searchTarget instanceof TextTarget imu) {
68+
nearImu.setImu(imu.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearImu.setImu(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearImu.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearImu.setCertainty(certainty);

src/main/java/io/weaviate/client6/v1/api/collections/query/NearMediaBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
abstract class NearMediaBuilder<SelfT extends NearMediaBuilder<SelfT, MediaT>, MediaT extends Object>
44
extends BaseVectorSearchBuilder<SelfT, MediaT> {
55
// Required query parameters.
6-
final String media;
6+
final Target media;
77

8-
public NearMediaBuilder(String media) {
8+
public NearMediaBuilder(Target media) {
99
this.media = media;
1010
}
1111
}

src/main/java/io/weaviate/client6/v1/api/collections/query/NearThermal.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearThermal(String thermal, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearThermal(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearThermal of(String thermal) {
15-
return of(thermal, ObjectBuilder.identity());
17+
return of(Target.blob(thermal));
1618
}
1719

1820
public static NearThermal of(String thermal, Function<Builder, ObjectBuilder<NearThermal>> fn) {
19-
return fn.apply(new Builder(thermal)).build();
21+
return of(Target.blob(thermal), fn);
22+
}
23+
24+
public static NearThermal of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearThermal of(Target searchTarget, Function<Builder, ObjectBuilder<NearThermal>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearThermal(Builder builder) {
@@ -28,8 +38,8 @@ public NearThermal(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearThermal> {
31-
public Builder(String thermal) {
32-
super(thermal);
41+
public Builder(Target searchTarget) {
42+
super(searchTarget);
3343
}
3444

3545
@Override
@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearThermalSearch.Builder protoBuilder() {
5666
var nearThermal = WeaviateProtoBaseSearch.NearThermalSearch.newBuilder();
57-
nearThermal.setThermal(thermal);
67+
if (searchTarget instanceof TextTarget thermal) {
68+
nearThermal.setThermal(thermal.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearThermal.setThermal(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearThermal.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearThermal.setCertainty(certainty);

src/main/java/io/weaviate/client6/v1/api/collections/query/NearVideo.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,30 @@
33
import java.util.function.Function;
44

55
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
6+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
7+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
68
import io.weaviate.client6.v1.internal.ObjectBuilder;
79
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
810
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
911
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1012

11-
public record NearVideo(String video, Float distance, Float certainty, BaseQueryOptions common)
13+
public record NearVideo(Target searchTarget, Float distance, Float certainty, BaseQueryOptions common)
1214
implements QueryOperator, AggregateObjectFilter {
1315

1416
public static NearVideo of(String video) {
15-
return of(video, ObjectBuilder.identity());
17+
return of(Target.blob(video));
1618
}
1719

1820
public static NearVideo of(String video, Function<Builder, ObjectBuilder<NearVideo>> fn) {
19-
return fn.apply(new Builder(video)).build();
21+
return of(Target.blob(video), fn);
22+
}
23+
24+
public static NearVideo of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
26+
}
27+
28+
public static NearVideo of(Target searchTarget, Function<Builder, ObjectBuilder<NearVideo>> fn) {
29+
return fn.apply(new Builder(searchTarget)).build();
2030
}
2131

2232
public NearVideo(Builder builder) {
@@ -28,8 +38,8 @@ public NearVideo(Builder builder) {
2838
}
2939

3040
public static class Builder extends NearMediaBuilder<Builder, NearVideo> {
31-
public Builder(String video) {
32-
super(video);
41+
public Builder(Target searchTarget) {
42+
super(searchTarget);
3343
}
3444

3545
@Override
@@ -54,7 +64,16 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
5464

5565
private WeaviateProtoBaseSearch.NearVideoSearch.Builder protoBuilder() {
5666
var nearVideo = WeaviateProtoBaseSearch.NearVideoSearch.newBuilder();
57-
nearVideo.setVideo(video);
67+
if (searchTarget instanceof TextTarget video) {
68+
nearVideo.setVideo(video.query().get(0));
69+
} else if (searchTarget instanceof CombinedTextTarget combined) {
70+
nearVideo.setVideo(combined.query().get(0));
71+
}
72+
73+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
74+
if (searchTarget.appendTargets(targets)) {
75+
nearVideo.setTargets(targets);
76+
}
5877

5978
if (certainty != null) {
6079
nearVideo.setCertainty(certainty);

0 commit comments

Comments
 (0)