Skip to content

Commit 162f860

Browse files
committed
feat: request all metadata with Metadata.ALL
1 parent f7140dd commit 162f860

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

src/it/java/io/weaviate/integration/SearchITest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,4 +415,49 @@ public void testBadRequest_async() throws Throwable {
415415
}
416416
}
417417
}
418+
419+
@Test
420+
public void testMetadataAll() throws IOException {
421+
// Arrange
422+
var nsThings = ns("Things");
423+
client.collections.create(nsThings,
424+
c -> c
425+
.properties(Property.text("name"))
426+
.vectors(Vectorizers.text2vecContextionary(
427+
t2v -> t2v.sourceProperties("name"))));
428+
429+
var things = client.collections.use(nsThings);
430+
var frisbee = things.data.insert(Map.of("name", "orange disc"));
431+
432+
// Act
433+
var gotHybrid = things.query.hybrid("orange", q -> q
434+
.queryProperties("name")
435+
.returnMetadata(Metadata.ALL));
436+
437+
var gotNearText = things.query.nearText("frisbee", q -> q
438+
.returnMetadata(Metadata.ALL));
439+
440+
// Assert
441+
var metadataHybrid = Assertions.assertThat(gotHybrid.objects())
442+
.hasSize(1)
443+
.extracting(WeaviateObject::metadata)
444+
.first().actual();
445+
446+
Assertions.assertThat(metadataHybrid.uuid()).as("uuid").isNotNull().isEqualTo(frisbee.uuid());
447+
Assertions.assertThat(metadataHybrid.creationTimeUnix()).as("creationTimeUnix").isNotNull();
448+
Assertions.assertThat(metadataHybrid.lastUpdateTimeUnix()).as("lastUpdateTimeUnix").isNotNull();
449+
Assertions.assertThat(metadataHybrid.score()).as("score").isNotNull();
450+
Assertions.assertThat(metadataHybrid.explainScore()).as("explainScore").isNotNull().isNotEqualTo("");
451+
452+
var metadataNearText = Assertions.assertThat(gotNearText.objects())
453+
.hasSize(1)
454+
.extracting(WeaviateObject::metadata)
455+
.first().actual();
456+
457+
Assertions.assertThat(metadataNearText.uuid()).as("uuid").isNotNull().isEqualTo(frisbee.uuid());
458+
Assertions.assertThat(metadataNearText.creationTimeUnix()).as("creationTimeUnix").isNotNull();
459+
Assertions.assertThat(metadataNearText.lastUpdateTimeUnix()).as("lastUpdateTimeUnix").isNotNull();
460+
Assertions.assertThat(metadataNearText.distance()).as("distance").isNotNull();
461+
Assertions.assertThat(metadataNearText.certainty()).as("certainty").isNotNull();
462+
}
418463
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
public interface Metadata {
1212
void appendTo(WeaviateProtoSearchGet.MetadataRequest.Builder metadata);
1313

14+
/** Include metadata in the metadata response. */
15+
public static final Metadata ALL = MetadataField.ALL;
1416
/** Include associated vector in the metadata response. */
1517
public static final Metadata VECTOR = MetadataField.VECTOR;
1618
/** Include object creation time in the metadata response. */
@@ -68,6 +70,7 @@ public interface Metadata {
6870
* MetadataField are collection properties that can be requested for any object.
6971
*/
7072
enum MetadataField implements Metadata {
73+
ALL,
7174
UUID,
7275
VECTOR,
7376
CREATION_TIME_UNIX,
@@ -79,6 +82,12 @@ enum MetadataField implements Metadata {
7982

8083
public void appendTo(WeaviateProtoSearchGet.MetadataRequest.Builder metadata) {
8184
switch (this) {
85+
case ALL: // fallthrough to add all
86+
for (final var f : MetadataField.values()) {
87+
if (f != ALL) {
88+
f.appendTo(metadata);
89+
}
90+
}
8291
case UUID:
8392
metadata.setUuid(true);
8493
break;

0 commit comments

Comments
 (0)