Skip to content

Commit 86a67d4

Browse files
authored
Merge pull request #217 from weaviate/hybrid_fusion_type_support
Adds hybrid fusion type support
2 parents a368045 + 77cc551 commit 86a67d4

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.weaviate.client.v1.graphql.query.argument;
2+
3+
public interface FusionType {
4+
5+
String RANKED = "rankedFusion";
6+
String RELATIVE_SCORE = "relativeScoreFusion";
7+
}

src/main/java/io/weaviate/client/v1/graphql/query/argument/HybridArgument.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import lombok.Getter;
1111
import lombok.ToString;
1212
import lombok.experimental.FieldDefaults;
13+
import org.apache.commons.lang3.StringUtils;
1314

1415
@Getter
1516
@Builder
@@ -20,6 +21,7 @@ public class HybridArgument implements Argument {
2021
String query;
2122
Float alpha;
2223
Float[] vector;
24+
String fusionType;
2325

2426
@Override
2527
public String build() {
@@ -32,6 +34,9 @@ public String build() {
3234
if (alpha != null) {
3335
arg.add(String.format("alpha:%s", alpha));
3436
}
37+
if (StringUtils.isNotBlank(fusionType)) {
38+
arg.add(String.format("fusionType:%s", fusionType));
39+
}
3540

3641
return String.format("hybrid:{%s}", String.join(" ", arg));
3742
}

src/test/java/io/weaviate/client/v1/graphql/query/argument/HybridArgumentTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,30 @@ public void shouldCreateArgumentWithChars() {
4242

4343
assertThat(str).isEqualTo("hybrid:{query:\"\\\"I'm a complex string\\\" says the {'`:string:`'}\"}");
4444
}
45+
46+
@Test
47+
public void shouldCreateArgumentWithFusionTypeRanked() {
48+
HybridArgument hybrid = HybridArgument.builder()
49+
.query("I'm a simple string")
50+
.fusionType(FusionType.RANKED)
51+
.build();
52+
53+
String str = hybrid.build();
54+
55+
assertThat(str).isEqualTo("hybrid:{query:\"I'm a simple string\" " +
56+
"fusionType:rankedFusion}");
57+
}
58+
59+
@Test
60+
public void shouldCreateArgumentWithFusionTypeRelativeScore() {
61+
HybridArgument hybrid = HybridArgument.builder()
62+
.query("I'm a simple string")
63+
.fusionType(FusionType.RELATIVE_SCORE)
64+
.build();
65+
66+
String str = hybrid.build();
67+
68+
assertThat(str).isEqualTo("hybrid:{query:\"I'm a simple string\" " +
69+
"fusionType:relativeScoreFusion}");
70+
}
4571
}

0 commit comments

Comments
 (0)