/ SQLite

Full text search mit SQLite für Ghost - ein erster Versuch

Mittlerweile hab ich mich ein wenig damit befasst, die Ghost-Datenbank selber zu durchsuchen. Es ist da zwar auch was in Bewegung, aber derzeit (0.4.2) funktioniert das offenbar noch nicht. Scheint auch noch zu dauern. Und ein paar Sachen ausprobieren schadet ja nicht, bis 0.8 wird's noch eine Weile dauern.

Die auf dem Uberspace verfügbare SQLite-Version kommt mit FTS3 - den Rest habe ich mehr oder weniger abgeschrieben.

CREATE VIRTUAL TABLE searchtable USING FTS3 (id, Title, Markdown);
INSERT INTO searchtable SELECT id, title, markdown FROM posts;

Dank Markdown (menschenlesbar und suchmaschinenfreundlich) kann die Spalte einfach übernommen werden. Jetzt lässt sich das ganze recht nett mit den gewohnten Wildcard-Patterns durchsuchen.

sqlite> select id, Title from searchtable where markdown match 'Sea*';
21|Der Stand der Dinge
22|Google custom search für Ghost
61|Eigenes Ghost-Theme - Teil 0
62|Google Custom Search und Ghost
69|Tapirus
74|SQLite Volltextsuche
79|Sea of Clouds
80|SeaCloud
81|Private Seafile Server

Damit lässt sich doch schon was anfangen. Jetzt braucht's noch eine Möglichkeit von der Webseite aus drauf zuzugreifen (muss mir noch überlegen ob ich da mit node.js oder doch mit Python herumspiele - zu Ghost würde ja node.js besser passen.

Dann wäre noch ein einigermaßen schlauer Update-Mechanismus nett. Für den Moment ist es natürlich noch machbar, den ganzen Index neu aufzubauen - später wäre aber wünschenswert, jeweils bei der Änderung eines Posts bzw. beim erstellen des selben auch nur genau jene Einträge zu aktualisieren. Da werde ich wohl mal forschen, welche Hooks Ghost da bereits bereitstellt.

Schließlich muss ich mir noch über die Kommentare Gedanken machen. Die laufen bei mir ja mit Isso und liegen daher in einer anderen Datenbank. Ist aber zweitrangig, erst mal sollen die Posts durchsuchbar werden.