---
tags:
  - VPS-IA
  - SilverBullet
date: 2026-11-01
description: "FTS cassée par SB 2.12.1 : basic-search retiré, Silversearch 1.2.6 installé à la place."
nature: documentation
projects:
  - [[03_PROJETS/VPS-IA]]
type: note
---
# Réparation FTS SilverBullet — remplacement de basic-search par Silversearch

## Symptôme

- **25 825 erreurs** `search.indexPage: Function batchSet not found` dans les logs entre le 08/10 et le 01/11 (~1 000 / 10 min pendant les boots).
- Recherche plein texte (FTS) **totalement cassée** : indexation et recherche `search:` mortes.

## Diagnostic

- Plug `Library/silverbulletmd/basic-search/search.plug.js` (installé le 30/07, upstream non corrigé — 3 commits) appelait `index.batchSet` et `index.query`.
- Ces API ont été **supprimées de SilverBullet 2.12.1** (liste complète des fonctions `index.*` vérifiée dans le binaire : ni `batchSet`, ni `query`).
- Aucun plug `search` std dans 2.12.1 → basic-search était le seul moteur de FTS, mais totalement inopérant.
- Aucun usage de la virtual-page `search:` dans l'espace → retrait sans casse.

## Actions (2026-11-01)

1. **Backup réversible** : `search.plug.js` → `search.plug.js.bak` (via API `/.fs`, droits disque `silverbullet` non modifiables en `opencode` — pas de sudo). Copie locale de sécurité : /tmp/opencode/basic-search.plug.js.
2. **Installation Silversearch 1.2.6** (plug officiel du repo Std de SB) :
   - `Library/mrmugame/Silversearch/PLUG.md` (7,7 Ko)
   - `Library/mrmugame/Silversearch/silversearch.plug.js` (118 Ko, release GitHub `1.2.6`)
   - Upload via PUT `/.fs` → HTTP 200.
3. **`system.reloadPlugs()`** via `eval_lua` → logs : `Activated plug silversearch`, et plus `Activated plug search`.
4. **`index.reindexSpace()`** → `Full index completed after 44593 ms` (1 120 pages, 89 756 anciennes clés purgées). *Note : l'eval MCP peut timeout (45 s de reindex) mais le reindex continue côté serveur.*

## Vérifications

- **0 erreur** `batchSet not found` après la désactivation (2 dernières = 12:49:00/16, avant le retrait).
- **0 ERROR** dans les logs depuis le reload (12:49:50).
- `silversearch.search("silversearch")` → résultats corrects (scores, extraits, correspondances) ✓.
- Commandes disponibles : `Silversearch: Search` (Ctrl-S), `Silversearch: Reindex` (le reindex SB relance aussi celui de Silversearch).

## Anomalies résiduelles (laissées telles quel — impact nul)

- Erreurs de boot transitoires `global 'template'` / `field 'list_pages'` (`Lua_Hub-Univers`, `Query_Templates`, `ai.tools` : sept erreurs en 3 semaines, au chargement du client ; tout fonctionne après l'init — vérifié `type(hub.domains)`, `type(ai.tools.list_pages)` = `function`/`table`). Risque de casser l'ordre des scripts pour un gain marginal.

## Rollback

1. `DELETE` des 2 fichiers `Library/mrmugame/Silversearch/*` via `/.fs`.
2. `PUT` de `search.plug.js` (contenu dans `.bak` et en local /tmp/opencode).
3. `system.reloadPlugs()` + `index.reindexSpace()`.

## Référence

- Silversearch : https://github.com/MrMugame/silversearch (recommandé par l'auteur de basic-search)
- basic-search : https://github.com/silverbulletmd/basic-search (incompatible SB 2.12)
- Doc existante : [[04_NOTES/VPS-IA_MCP-SilverBullet-Offline]] (incident séparé du 30/10, réglé par `systemctl restart silverbullet`)
