Schema: ngram.sizes auf 2–10 begrenzen, combinedCache ergänzen
continuous-integration/drone/push Build is passing

Die Gesamtabnahme fand zwei Lücken im Config-Vertrag:

- ngram.sizes erlaubte minimum 1 und hatte kein maximum; der Server akzeptiert
  nur 2–10 (collection_setup.go) — das Schema ließ also Configs durch, die beim
  Projektload scheitern.
- combinedCache fehlte komplett, obwohl Server (models.CombinedCacheConfig) und
  Doku den Block als Projekt-YAML führen; additionalProperties:false lehnte
  gültige, dokumentierte Configs ab.

Ergänzt in collection.schema.json und index.d.ts (CombinedCacheConfig mit
enabled/ttl/maxEntries). Die Demo-Collection ngram-stopwords.yml enthält jetzt
eine Combined-Config mit combinedCache, sodass validate:schemas den Block
abdeckt. Gegenprobe per AJV: sizes [1] und [11] werden abgelehnt, [2,3] und
combinedCache akzeptiert.
This commit is contained in:
apairon committed 2026-10-19 22:34:56 +00:00
1 parent 9e12a8e9c3
commit 21472bdc72
3 files changed
+37 -1

No files matched your search

+11
View File
@@ -30,3 +30,14 @@ search:
enabled: true
maxDocs: 150000
maxMemoryMB: 512
- name: combined
mode: combined
rrf:
k: 60
topK: 100
weights:
fuzzy: 1.0
combinedCache:
enabled: true
ttl: 45s
maxEntries: 1000
Vendored
+8
View File
@@ -90,6 +90,12 @@ declare global {
minMatchRatio?: number
}
export interface CombinedCacheConfig {
enabled?: boolean
ttl?: string
maxEntries?: number
}
export interface NgramInMemoryConfig {
enabled?: boolean
maxDocs?: number
@@ -193,6 +199,8 @@ declare global {
filter?: { [key: string]: any }
/** Ngram search configuration */
ngram?: NgramConfig
/** Result cache for combined searches */
combinedCache?: CombinedCacheConfig
/** Regex search configuration */
regex?: RegexConfig
/** Custom scoring for eval/filter search */
+18 -1
View File
@@ -321,7 +321,8 @@
"type": "array",
"items": {
"type": "integer",
"minimum": 1
"minimum": 2,
"maximum": 10
}
},
"normalize": {
@@ -387,6 +388,22 @@
}
}
},
"combinedCache": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"ttl": {
"type": "string"
},
"maxEntries": {
"type": "integer",
"minimum": 0
}
}
},
"regex": {
"type": "object",
"additionalProperties": false,