Skip to content

Commit 355ac56

Browse files
committed
refactor: pass nearText query as TextTarget
1 parent 89fbe88 commit 355ac56

7 files changed

Lines changed: 585 additions & 254 deletions

File tree

src/main/java/io/weaviate/client6/v1/api/collections/aggregate/AbstractAggregateClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ public ResponseT nearText(String text, Function<Aggregation.Builder, ObjectBuild
427427
* @see AggregateResponse
428428
*/
429429
public ResponseT nearText(List<String> concepts, Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn) {
430-
return nearText(NearText.of(concepts), fn);
430+
return nearText(NearText.of(Target.text(concepts)), fn);
431431
}
432432

433433
/**
@@ -444,7 +444,7 @@ public ResponseT nearText(List<String> concepts, Function<Aggregation.Builder, O
444444
*/
445445
public ResponseT nearText(String text, Function<NearText.Builder, ObjectBuilder<NearText>> nt,
446446
Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn) {
447-
return nearText(NearText.of(text, nt), fn);
447+
return nearText(NearText.of(Target.text(List.of(text)), nt), fn);
448448
}
449449

450450
/**
@@ -461,7 +461,7 @@ public ResponseT nearText(String text, Function<NearText.Builder, ObjectBuilder<
461461
*/
462462
public ResponseT nearText(List<String> concepts, Function<NearText.Builder, ObjectBuilder<NearText>> nt,
463463
Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn) {
464-
return nearText(NearText.of(concepts, nt), fn);
464+
return nearText(NearText.of(Target.text(concepts), nt), fn);
465465
}
466466

467467
/**
@@ -513,7 +513,7 @@ public GroupedResponseT nearText(String text, Function<Aggregation.Builder, Obje
513513
*/
514514
public GroupedResponseT nearText(List<String> concepts, Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn,
515515
GroupBy groupBy) {
516-
return nearText(NearText.of(concepts), fn, groupBy);
516+
return nearText(NearText.of(Target.text(concepts)), fn, groupBy);
517517
}
518518

519519
/**
@@ -553,7 +553,7 @@ public GroupedResponseT nearText(String text, Function<NearText.Builder, ObjectB
553553
*/
554554
public GroupedResponseT nearText(List<String> concepts, Function<NearText.Builder, ObjectBuilder<NearText>> nt,
555555
Function<Aggregation.Builder, ObjectBuilder<Aggregation>> fn, GroupBy groupBy) {
556-
return nearText(NearText.of(concepts, nt), fn, groupBy);
556+
return nearText(NearText.of(Target.text(concepts), nt), fn, groupBy);
557557
}
558558

559559
/**

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

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.weaviate.client6.v1.api.collections.query;
22

3+
import java.util.Arrays;
34
import java.util.List;
45
import java.util.Optional;
56
import java.util.function.Function;
@@ -548,7 +549,7 @@ public GroupedResponseT nearObject(NearObject query, GroupBy groupBy) {
548549
* error status code.
549550
*/
550551
public ResponseT nearText(String... text) {
551-
return nearText(NearText.of(text));
552+
return nearText(Target.text(Arrays.asList(text)));
552553
}
553554

554555
/**
@@ -560,7 +561,7 @@ public ResponseT nearText(String... text) {
560561
* error status code.
561562
*/
562563
public ResponseT nearText(String text, Function<NearText.Builder, ObjectBuilder<NearText>> fn) {
563-
return nearText(NearText.of(text, fn));
564+
return nearText(Target.text(List.of(text)), fn);
564565
}
565566

566567
/**
@@ -572,7 +573,30 @@ public ResponseT nearText(String text, Function<NearText.Builder, ObjectBuilder<
572573
* error status code.
573574
*/
574575
public ResponseT nearText(List<String> text, Function<NearText.Builder, ObjectBuilder<NearText>> fn) {
575-
return nearText(NearText.of(text, fn));
576+
return nearText(Target.text(text), fn);
577+
}
578+
579+
/**
580+
* Query collection objects using near text search.
581+
*
582+
* @param searchTarget Target query concepts.
583+
* @throws WeaviateApiException in case the server returned with an
584+
* error status code.
585+
*/
586+
public ResponseT nearText(Target searchTarget) {
587+
return nearText(NearText.of(searchTarget));
588+
}
589+
590+
/**
591+
* Query collection objects using near text search.
592+
*
593+
* @param searchTarget Target query concepts.
594+
* @param fn Lambda expression for optional parameters.
595+
* @throws WeaviateApiException in case the server returned with an
596+
* error status code.
597+
*/
598+
public ResponseT nearText(Target searchTarget, Function<NearText.Builder, ObjectBuilder<NearText>> fn) {
599+
return nearText(NearText.of(searchTarget, fn));
576600
}
577601

578602
/**
@@ -599,7 +623,7 @@ public ResponseT nearText(NearText query) {
599623
* @see QueryResponseGrouped
600624
*/
601625
public GroupedResponseT nearText(String text, GroupBy groupBy) {
602-
return nearText(NearText.of(text), groupBy);
626+
return nearText(Target.text(List.of(text)), groupBy);
603627
}
604628

605629
/**
@@ -615,7 +639,7 @@ public GroupedResponseT nearText(String text, GroupBy groupBy) {
615639
* @see QueryResponseGrouped
616640
*/
617641
public GroupedResponseT nearText(List<String> text, GroupBy groupBy) {
618-
return nearText(NearText.of(text), groupBy);
642+
return nearText(Target.text(text), groupBy);
619643
}
620644

621645
/**
@@ -631,9 +655,10 @@ public GroupedResponseT nearText(List<String> text, GroupBy groupBy) {
631655
* @see GroupBy
632656
* @see QueryResponseGrouped
633657
*/
634-
public GroupedResponseT nearText(String text, Function<NearText.Builder, ObjectBuilder<NearText>> fn,
658+
public GroupedResponseT nearText(String text,
659+
Function<NearText.Builder, ObjectBuilder<NearText>> fn,
635660
GroupBy groupBy) {
636-
return nearText(NearText.of(text), groupBy);
661+
return nearText(Target.text(List.of(text)), fn, groupBy);
637662
}
638663

639664
/**
@@ -649,9 +674,45 @@ public GroupedResponseT nearText(String text, Function<NearText.Builder, ObjectB
649674
* @see GroupBy
650675
* @see QueryResponseGrouped
651676
*/
652-
public GroupedResponseT nearText(List<String> text, Function<NearText.Builder, ObjectBuilder<NearText>> fn,
677+
public GroupedResponseT nearText(List<String> text,
678+
Function<NearText.Builder, ObjectBuilder<NearText>> fn,
679+
GroupBy groupBy) {
680+
return nearText(Target.text(text), groupBy);
681+
}
682+
683+
/**
684+
* Query collection objects using near text search.
685+
*
686+
* @param searchTarget Target query concepts.
687+
* @param groupBy Group-by clause.
688+
* @return Grouped query result.
689+
* @throws WeaviateApiException in case the server returned with an
690+
* error status code.
691+
*
692+
* @see GroupBy
693+
* @see QueryResponseGrouped
694+
*/
695+
public GroupedResponseT nearText(Target searchTarget, GroupBy groupBy) {
696+
return nearText(NearText.of(searchTarget), groupBy);
697+
}
698+
699+
/**
700+
* Query collection objects using near text search.
701+
*
702+
* @param searchTarget Target query concepts.
703+
* @param fn Lambda expression for optional parameters.
704+
* @param groupBy Group-by clause.
705+
* @return Grouped query result.
706+
* @throws WeaviateApiException in case the server returned with an
707+
* error status code.
708+
*
709+
* @see GroupBy
710+
* @see QueryResponseGrouped
711+
*/
712+
public GroupedResponseT nearText(Target searchTarget,
713+
Function<NearText.Builder, ObjectBuilder<NearText>> fn,
653714
GroupBy groupBy) {
654-
return nearText(NearText.of(text), groupBy);
715+
return nearText(NearText.of(searchTarget, fn), groupBy);
655716
}
656717

657718
/**

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

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,36 @@
66
import java.util.function.Function;
77

88
import io.weaviate.client6.v1.api.collections.aggregate.AggregateObjectFilter;
9+
import io.weaviate.client6.v1.api.collections.query.Target.CombinedTextTarget;
10+
import io.weaviate.client6.v1.api.collections.query.Target.TextTarget;
911
import io.weaviate.client6.v1.internal.ObjectBuilder;
1012
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoAggregate;
1113
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
1214
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoSearchGet;
1315

14-
public record NearText(List<String> concepts, Float distance, Float certainty, Move moveTo, Move moveAway,
16+
public record NearText(Target searchTarget, Float distance, Float certainty, Move moveTo,
17+
Move moveAway,
1518
BaseQueryOptions common) implements QueryOperator, AggregateObjectFilter {
1619

1720
public static NearText of(String... concepts) {
18-
return of(Arrays.asList(concepts), ObjectBuilder.identity());
21+
return of(Target.text(Arrays.asList(concepts)), ObjectBuilder.identity());
1922
}
2023

21-
public static NearText of(List<String> concepts) {
22-
return of(concepts, ObjectBuilder.identity());
24+
public static NearText of(Target searchTarget) {
25+
return of(searchTarget, ObjectBuilder.identity());
2326
}
2427

2528
public static NearText of(String text, Function<Builder, ObjectBuilder<NearText>> fn) {
26-
return of(List.of(text), fn);
29+
return of(Target.text(List.of(text)), fn);
2730
}
2831

29-
public static NearText of(List<String> concepts, Function<Builder, ObjectBuilder<NearText>> fn) {
30-
return fn.apply(new Builder(concepts)).build();
32+
public static NearText of(Target searchTarget, Function<Builder, ObjectBuilder<NearText>> fn) {
33+
return fn.apply(new Builder(searchTarget)).build();
3134
}
3235

3336
public NearText(Builder builder) {
3437
this(
35-
builder.concepts,
38+
builder.searchTarget,
3639
builder.distance,
3740
builder.certainty,
3841
builder.moveTo,
@@ -42,14 +45,14 @@ public NearText(Builder builder) {
4245

4346
public static class Builder extends BaseVectorSearchBuilder<Builder, NearText> {
4447
// Required query parameters.
45-
private final List<String> concepts;
48+
private final Target searchTarget;
4649

4750
// Optional query parameter.
4851
private Move moveTo;
4952
private Move moveAway;
5053

51-
public Builder(List<String> concepts) {
52-
this.concepts = concepts;
54+
public Builder(Target searchTarget) {
55+
this.searchTarget = searchTarget;
5356
}
5457

5558
public final Builder moveTo(float force, Function<Move.Builder, ObjectBuilder<Move>> fn) {
@@ -128,15 +131,24 @@ public void appendTo(WeaviateProtoAggregate.AggregateRequest.Builder req) {
128131
// Package-private for Hybrid to see.
129132
WeaviateProtoBaseSearch.NearTextSearch.Builder protoBuilder() {
130133
var nearText = WeaviateProtoBaseSearch.NearTextSearch.newBuilder();
131-
nearText.addAllQuery(concepts);
134+
135+
if (searchTarget instanceof TextTarget text) {
136+
nearText.addAllQuery(text.query());
137+
} else if (searchTarget instanceof CombinedTextTarget combined) {
138+
nearText.addAllQuery(combined.query());
139+
}
140+
141+
var targets = WeaviateProtoBaseSearch.Targets.newBuilder();
142+
if (searchTarget.appendTargets(targets)) {
143+
nearText.setTargets(targets);
144+
}
132145

133146
if (certainty != null) {
134147
nearText.setCertainty(certainty);
135148
} else if (distance != null) {
136149
nearText.setDistance(distance);
137150
}
138151

139-
// TODO: add targets
140152
if (moveTo != null) {
141153
var to = WeaviateProtoBaseSearch.NearTextSearch.Move.newBuilder();
142154
moveTo.appendTo(to);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.weaviate.client6.v1.api.collections.query;
2+
3+
import io.weaviate.client6.v1.internal.grpc.protocol.WeaviateProtoBaseSearch;
4+
5+
public interface NearVectorTarget extends Target {
6+
void appendVectors(WeaviateProtoBaseSearch.NearVector.Builder req);
7+
}

0 commit comments

Comments
 (0)