Skip to content

Commit 354e895

Browse files
committed
optimizeTopK in inverted indexes
1 parent b2b70fe commit 354e895

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/main/java/com/arangodb/entity/InvertedIndexEntity.java

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class InvertedIndexEntity implements Entity {
4545
private Collection<InvertedIndexField> fields;
4646
private Boolean searchField;
4747
private Collection<StoredValue> storedValues;
48+
private Collection<String> optimizeTopK;
4849
private InvertedIndexPrimarySort primarySort;
4950
private String analyzer;
5051
private Set<AnalyzerFeature> features;
@@ -104,6 +105,10 @@ public Collection<StoredValue> getStoredValues() {
104105
return storedValues;
105106
}
106107

108+
public Collection<String> getOptimizeTopK() {
109+
return optimizeTopK;
110+
}
111+
107112
public InvertedIndexPrimarySort getPrimarySort() {
108113
return primarySort;
109114
}

src/main/java/com/arangodb/model/InvertedIndexOptions.java

+15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class InvertedIndexOptions extends IndexOptions<InvertedIndexOptions> {
3838
private Integer parallelism;
3939
private InvertedIndexPrimarySort primarySort;
4040
private final Collection<StoredValue> storedValues = new ArrayList<>();
41+
private final Collection<String> optimizeTopK = new ArrayList<>();
4142
private String analyzer;
4243
private final Set<AnalyzerFeature> features = new HashSet<>();
4344
private Boolean includeAllFields;
@@ -112,6 +113,20 @@ public InvertedIndexOptions storedValues(StoredValue... storedValues) {
112113
return this;
113114
}
114115

116+
public Collection<String> getOptimizeTopK() {
117+
return optimizeTopK;
118+
}
119+
120+
/**
121+
* @param optimizeTopK An array of strings defining sort expressions that you want to optimize.
122+
* @return options
123+
* @since ArangoDB 3.11, Enterprise Edition only
124+
*/
125+
public InvertedIndexOptions optimizeTopK(String... optimizeTopK) {
126+
Collections.addAll(this.optimizeTopK, optimizeTopK);
127+
return this;
128+
}
129+
115130
public String getAnalyzer() {
116131
return analyzer;
117132
}

src/test/java/com/arangodb/InvertedIndexTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ private InvertedIndexOptions createOptions(String analyzerName) {
9393
.cache(cache)
9494
)
9595
.storedValues(new StoredValue(Arrays.asList("f3", "f4"), ArangoSearchCompression.none, cache))
96+
.optimizeTopK("BM25(@doc) DESC", "TFIDF(@doc) DESC")
9697
.analyzer(analyzerName)
9798
.features(AnalyzerFeature.position, AnalyzerFeature.frequency)
9899
.includeAllFields(false)
@@ -144,6 +145,10 @@ private void assertCorrectIndexEntity(InvertedIndexEntity indexResult, InvertedI
144145
assertThat(indexResult.getWritebufferSizeMax()).isEqualTo(options.getWritebufferSizeMax());
145146
assertThat(indexResult.getCache()).isEqualTo(options.getCache());
146147
assertThat(indexResult.getPrimaryKeyCache()).isEqualTo(options.getPrimaryKeyCache());
148+
149+
if (isEnterprise() && isAtLeastVersion(3, 11)) {
150+
assertThat(indexResult.getOptimizeTopK()).containsExactlyElementsOf(options.getOptimizeTopK());
151+
}
147152
}
148153

149154
@ParameterizedTest(name = "{index}")

0 commit comments

Comments
 (0)