Flat-File CMS Suche

Portfolio Persönliches Projekt

Flat-File CMS Suche

Projekt Information

Projekt: Flat-File CMS Suche
Kunde: -
Industriebereich: Persönliches Projekt
Firma: -
Ort: München
Datum: Juli 2023

Seitdem ich mich ernsthaft mit dem Flat File System für Pixel Imperfect beschäftige, wusste ich, dass es etwas gibt, das ich möglicherweise in der Zukunft benötigen werde, aber bisher habe ich mich noch nicht getraut, es zu entwickeln: ein internes Suchsystem.

Zunächst schien alles dagegen zu sprechen: Es wurden keine Datenbanken verwendet, was die Suche nach Inhalten in einer Flat File-Struktur komplex erscheinen ließ. Wie sollte nach Vorkommnissen gesucht werden? Wie könnten die Ergebnisse sortiert werden?

Wie ich in einem anderen Artikel bereits erwähnte, habe ich für die Entwicklung meines Flat File Systems eine Struktur von PHP-Objekten verwendet, die in JSON-Dateien gespeichert sind. Aus diesem Grund war mir klar, dass es nicht allzu kompliziert sein würde, Inhalte in diesen Objekten zu durchsuchen... oder? Also habe ich mich ans Werk gemacht.

Verwandte Inhalte

Pixel Imperfect

Ich hatte schon lange Lust, ein neues persönliches Projekt zu erstellen: vollständige Freiheit, alles zu gestalten, was ich wollte, aber ich hatte auch Lust, etwas Neues zu programmieren.

Funktionsweise.

Das System geht zuerst vor, indem es alle Inhalte der Website in ein einziges PHP-Objekt umwandelt, wenn eine Suche ausgeführt wird. Dafür erfolgt eine erste Vorauswahl, bei der Inhalte, die über die Verwaltung als nicht indizierbar markiert wurden (Entwürfe, eingeschränkter Inhalt usw.), ausgeschlossen werden.

Der nächste Schritt besteht darin, in jeder Seite und für jeden indizierbaren Inhaltstyp (Textblöcke, Überschriften, Bildunterschriften usw.) nach der vollständigen Suchzeichenkette zu suchen. Jedes Mal, wenn eine Übereinstimmung gefunden wird, wird dem Objekt der Seite ein neuer Schlüssel hinzugefügt, dessen Wert die Anzahl der Vorkommnisse ist. Anschließend durchsucht das System, falls die Suchzeichenkette aus mehr als einem Wort besteht, erneut jede Seite nach jedem einzelnen Wort und erstellt einen neuen Schlüssel. Wenn keine Übereinstimmung bei der zweiten Suche gefunden wird (was bedeutet, dass kein Element der Suchzeichenkette auf der betreffenden Seite vorhanden ist), wird diese Seite aus dem Objekt entfernt. Dadurch erhalten wir ein Objekt, das nur Seiten enthält, die mit der durchgeführten Suche übereinstimmen und zusätzlich mit vorhandenen Treffern markiert sind.

Der letzte Schritt besteht darin, das Objekt basierend auf den gefundenen Übereinstimmungen neu zu ordnen und dabei den vollständigen Zeichenkettenübereinstimmungen Vorrang zu geben. Dadurch erhalten wir ein Objekt, in dem die Suchergebnisse nach Relevanz geordnet sind.

Front-End.

Schließlich bleibt nur noch die Anzeige der Suchergebnisse übrig. Hierfür nimmt das System das generierte PHP-Objekt und erstellt eine Seite, auf der für jedes Ergebnis der Titel der Seite, eine Zusammenfassung, das Hauptbild und seine URL angezeigt werden. Dies alles ist nach Relevanz geordnet.

Nächste Schritte.

Da die Gesamtanzahl der Seiten in Pixel Imperfect nicht besonders groß ist (es handelt sich um weniger als 30 Seiten pro Sprache), scheint ein Filtersystem nicht erforderlich zu sein, da der Inhalt nicht ausreicht, um es zu rechtfertigen. Deshalb habe ich vorerst keines entwickelt. Ich schließe jedoch nicht aus, dass ich in Zukunft ein Filtersystem für die Ergebnisse entwickeln werde oder für andere Projekte, die dasselbe CMS verwenden. Schließlich würde dies bedeuten, das Objekt der Ergebnisse basierend auf verschiedenen Parametern zu filtern und neu zu ordnen.