Fix semantic-disabled Meilisearch settings
- Omit Meilisearch embedders unless semantic search is enabled - Default semantic ratio setting to 0.50
This commit is contained in:
@@ -258,7 +258,7 @@ func (i *CatalogSearchIndexer) Rebuild(ctx context.Context, progress SearchIndex
|
||||
if err := client.WaitTask(ctx, taskID); err != nil {
|
||||
return stats, err
|
||||
}
|
||||
taskID, err = client.UpdateSettings(ctx, buildIndexUID, catalogSearchMeilisearchSettings(settings.Embedder))
|
||||
taskID, err = client.UpdateSettings(ctx, buildIndexUID, catalogSearchMeilisearchSettings(settings.Embedder, settings.SemanticEnabled))
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
@@ -438,12 +438,8 @@ func (i *CatalogSearchIndexer) CheckConnection(ctx context.Context, settings Cat
|
||||
return client.Health(ctx)
|
||||
}
|
||||
|
||||
func catalogSearchMeilisearchSettings(embedder string) map[string]any {
|
||||
embedder, err := NormalizeCatalogSearchEmbedderName(embedder)
|
||||
if err != nil {
|
||||
embedder = DefaultMeilisearchEmbedder
|
||||
}
|
||||
return map[string]any{
|
||||
func catalogSearchMeilisearchSettings(embedder string, semanticEnabled bool) map[string]any {
|
||||
settings := map[string]any{
|
||||
"displayedAttributes": []string{"content_id", "type"},
|
||||
"filterableAttributes": []string{"type"},
|
||||
"searchableAttributes": []string{
|
||||
@@ -462,8 +458,15 @@ func catalogSearchMeilisearchSettings(embedder string) map[string]any {
|
||||
"pagination": map[string]any{
|
||||
"maxTotalHits": meilisearchDefaultCandidateScanCap,
|
||||
},
|
||||
"embedders": catalogSearchMeilisearchEmbedderSettings(embedder),
|
||||
}
|
||||
if semanticEnabled {
|
||||
embedder, err := NormalizeCatalogSearchEmbedderName(embedder)
|
||||
if err != nil {
|
||||
embedder = DefaultMeilisearchEmbedder
|
||||
}
|
||||
settings["embedders"] = catalogSearchMeilisearchEmbedderSettings(embedder)
|
||||
}
|
||||
return settings
|
||||
}
|
||||
|
||||
func coalesceSearchIndexEvents(events []SearchIndexEvent) (upsertIDs []string, deleteIDs []string) {
|
||||
|
||||
@@ -127,6 +127,29 @@ func TestCatalogSearchDocumentVectorsUseEmbedderAndOptOutMissing(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCatalogSearchMeilisearchSettingsOmitEmbeddersWhenSemanticDisabled(t *testing.T) {
|
||||
settings := catalogSearchMeilisearchSettings("silo_recommendations", false)
|
||||
|
||||
if _, ok := settings["embedders"]; ok {
|
||||
t.Fatalf("semantic-disabled settings should not include embedders: %#v", settings["embedders"])
|
||||
}
|
||||
if _, ok := settings["searchableAttributes"]; !ok {
|
||||
t.Fatal("semantic-disabled settings should still configure keyword searchable attributes")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCatalogSearchMeilisearchSettingsIncludeEmbeddersWhenSemanticEnabled(t *testing.T) {
|
||||
settings := catalogSearchMeilisearchSettings("custom_embedder", true)
|
||||
|
||||
embedders, ok := settings["embedders"].(map[string]any)
|
||||
if !ok {
|
||||
t.Fatalf("embedders = %#v, want map[string]any", settings["embedders"])
|
||||
}
|
||||
if _, ok := embedders["custom_embedder"]; !ok {
|
||||
t.Fatalf("embedders = %#v, want custom_embedder", embedders)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCatalogSearchDocumentPayloadBatchesSplitVectorDocs(t *testing.T) {
|
||||
vector := make([]float32, 128)
|
||||
docs := []catalogSearchDocument{
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
-- +goose Up
|
||||
UPDATE server_settings
|
||||
SET value = '0.50'
|
||||
WHERE key = 'catalog.search.meilisearch.semantic_ratio'
|
||||
AND value = '0.30';
|
||||
|
||||
INSERT INTO server_settings (key, value)
|
||||
VALUES ('catalog.search.meilisearch.semantic_ratio', '0.50')
|
||||
ON CONFLICT (key) DO NOTHING;
|
||||
|
||||
-- +goose Down
|
||||
UPDATE server_settings
|
||||
SET value = '0.30'
|
||||
WHERE key = 'catalog.search.meilisearch.semantic_ratio'
|
||||
AND value = '0.50';
|
||||
Reference in New Issue
Block a user