Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0ecad04

Browse files
committed
optimizeTopK in inverted indexes
1 parent 9865ebb commit 0ecad04

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
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‎

Lines changed: 15 additions & 0 deletions
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‎

Lines changed: 5 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /