„Unsere Shop-Suche liefert wieder keine relevanten Ergebnisse.“ – Ein Satz, den ihr als E-Commerce-Developer oder Shop-Manager sicher nicht zum ersten Mal hört. Die Produktsuche ist das Herzstück jedes Online-Shops, und doch wird sie oft stiefmütterlich behandelt. Mit Gally gibt es endlich eine Symfony-basierte Open Source Lösung, die Searchandising auf Enterprise-Niveau bringt – ohne Vendor Lock-in und mit voller Kontrolle über eure Daten.
Nach über 15 Jahren Erfahrung in Softwarequalität, Open Source und Remote Consulting zeigen wir euch bei Never Code Alone heute, warum Gally eure E-Commerce-Suche transformieren kann und wie ihr die Searchandising Engine in eure Symfony-Projekte integriert.
Was ist Gally und warum solltet ihr es kennen?
Gally ist eine Next-Generation Searchandising Engine, die auf Symfony, API Platform und Elasticsearch aufbaut. Die Software wurde vom ElasticSuite-Team entwickelt – den Machern hinter der meistgeladenen Magento-Sucherweiterung mit über 10 Jahren Erfahrung im E-Commerce-Suchbereich.
Der Begriff „Searchandising“ kombiniert Search und Merchandising: Ihr steuert nicht nur, was Kunden finden, sondern auch wie und in welcher Reihenfolge Produkte präsentiert werden. Das macht den entscheidenden Unterschied zwischen einer Shop-Suche, die frustriert, und einer, die konvertiert.
Gally folgt dem MACH-Prinzip: Microservices, API-first, Cloud-native und Headless. Das bedeutet für euch maximale Flexibilität bei der Integration in bestehende Systeme – egal ob Sylius, Shopware oder eine komplett eigenentwickelte Lösung.
Wie installiere ich Gally in meinem Symfony-Projekt?
Die Installation von Gally erfolgt über Docker, was den Einstieg erheblich vereinfacht. Hier die grundlegenden Schritte für eine lokale Entwicklungsumgebung:
# Repository klonen
git clone https://github.com/Elastic-Suite/gally.git
cd gally
# Docker Container starten
make install
Der make install Befehl baut alle benötigten Docker Container inklusive einer React-basierten Beispiel-Frontend-Anwendung. Anschließend importiert ihr die Sample-Daten:
# Beispieldaten laden
make fixtures_load
# Admin-Account erstellen
make sf c=gally:user:create
Verwendet ROLE_ADMIN als Rolle für vollständigen Backend-Zugriff. Das Back-Office erreicht ihr unter https://localhost/, die API-Dokumentation unter https://localhost/graphql/.
Für die Integration in bestehende Sylius-Projekte steht das offizielle Gally Sylius Plugin zur Verfügung:
composer require gally/sylius-plugin
Welche Vorteile bietet Gally gegenüber Algolia oder Elasticsearch direkt?
Der größte Vorteil von Gally: Ihr bekommt Enterprise-Features ohne Enterprise-Preise. Anders als bei Algolia zahlt ihr nicht pro Suchanfrage oder Record-Anzahl. Gally ist vollständig Open Source unter Apache 2.0 Lizenz – On-Premise oder Cloud-Deployment, ihr entscheidet.
Im Vergleich zur direkten Elasticsearch-Nutzung abstrahiert Gally die komplexen Konzepte hinter einer sauberen API. Ihr müsst keine Elasticsearch-Experten sein, um performante Suchergebnisse zu liefern. Die E-Commerce-spezifischen Features wie Facetten-Management, Produkt-Positionierung und virtuelle Kategorien sind direkt einsatzbereit.
Gally bringt zudem ein vollständiges Back-Office mit, in dem Merchandising-Teams ohne Entwicklerkenntnisse Synonyme pflegen, Produkte boosten und Suchergebnisse kuratieren können. Das entlastet euer Development-Team erheblich.
Die MACH-Architektur bedeutet auch: Wenn ihr später doch wechseln wollt, seid ihr nicht gefangen. API-first heißt, dass jede Komponente austauschbar bleibt.
Wie funktioniert die GraphQL API von Gally?
Gally bietet sowohl REST als auch GraphQL Endpoints. Die GraphQL API eignet sich besonders für Frontend-Integrationen, da ihr genau die Daten anfragt, die ihr benötigt – nicht mehr, nicht weniger.
Ein typischer Such-Request sieht so aus:
{
"entityType": "product",
"localizedCatalog": "7",
"currentPage": 1,
"pageSize": 10,
"search": "Sneaker"
}
Die Authentifizierung erfolgt über JWT-Tokens:
# Token abrufen
http --verify no https://localhost/authentication_token
email=admin@shop.de password=geheim
Das zurückgegebene Token verwendet ihr dann in allen weiteren Requests. Die automatisch generierte Swagger/OpenAPI-Dokumentation macht das Testen und Erkunden der API zum Kinderspiel.
API Platform unter der Haube bedeutet auch: Ihr könnt das Datenmodell nach Belieben erweitern. Neben Produkten und Kategorien lassen sich beliebige Entitäten wie Blog-Posts, FAQs oder Store-Locations indexieren und durchsuchen.
Kann ich Gally auch für Nicht-E-Commerce-Projekte nutzen?
Obwohl Gally auf E-Commerce optimiert ist, steht dem Einsatz in anderen Kontexten nichts im Weg. Die flexible API ermöglicht die Indexierung beliebiger Datentypen.
Anwendungsbeispiele außerhalb des klassischen Online-Shops:
- Dokumenten-Management: Durchsucht interne Dokumente, Verträge oder Handbücher
- Knowledge Bases: Implementiert intelligente Suche für Support-Portale
- Immobilien-Portale: Facettierte Suche nach Preis, Lage, Ausstattung
- Job-Börsen: Matching von Stellenangeboten und Kandidaten
- Content-Plattformen: Unified Search über Artikel, Videos und Podcasts
Der entscheidende Vorteil: Ihr müsst euch nicht mit der Komplexität von Elasticsearch auseinandersetzen. Gally kapselt die schwierigen Konzepte und bietet eine entwicklerfreundliche Abstraktion.
Welche Shopware und Sylius Integrationen gibt es?
Gally bietet offizielle Konnektoren für die wichtigsten Symfony-basierten E-Commerce-Plattformen:
Sylius Integration:
// bundles.php
GallySyliusPluginGallySyliusPlugin::class => ['all' => true],
Das Plugin synchronisiert automatisch Produkte, Kategorien und Attribute. Die Suche und Filterung im Frontend wird nahtlos durch Gally übernommen, ohne dass ihr die Sylius-Templates grundlegend ändern müsst.
Shopware 6 Extension:
Die Shopware-Extension findet ihr direkt im Shopware Store. Nach der Aktivierung synchronisiert ihr die Struktur:
bin/console --no-debug gally:structure-sync
bin/console --no-debug gally:index
Produktänderungen werden danach automatisch synchronisiert – kein manueller Re-Index nötig.
Beide Integrationen bringen Features wie den noUiSlider für intuitive Preisfilter mit und unterstützen Multi-Channel-Setups mit mehreren Sprachen und Währungen.
Wie konfiguriere ich Synonyme und Thesaurus für bessere Suchergebnisse?
Gute Suchergebnisse stehen und fallen mit der Synonym-Konfiguration. Kunden suchen nach „Turnschuh“, ihr habt aber nur „Sneaker“ im Katalog. Ohne Synonyme: Null Treffer. Mit Gally löst ihr das elegant im Back-Office.
Das Synonym-Management unterstützt zwei Varianten:
Bidirektionale Synonyme: „Sneaker“ und „Turnschuh“ werden gleichwertig behandelt. Sucht jemand nach einem der Begriffe, findet er beide.
Unidirektionale Synonyme: „Treter“ führt zu „Sneaker“, aber nicht umgekehrt. Nützlich für umgangssprachliche Begriffe, die ihr nicht als Hauptbegriffe etablieren wollt.
Für jede Sprache pflegt ihr separate Synonym-Listen. Das verhindert ungewollte Überschneidungen in mehrsprachigen Shops.
Zusätzlich bietet Gally die Möglichkeit, Ranking Cocktails zu definieren – Regelwerke, die bestimmte Produkte basierend auf Attributen, Lagerbestand oder Marge nach oben pushen. So kombiniert ihr relevante Suchergebnisse mit euren Business-Zielen.
Was sind virtuelle Kategorien und wie nutze ich sie?
Virtuelle Kategorien sind dynamische Produktlisten, die sich automatisch anhand von Regeln aktualisieren. Statt manuell Produkte zu kategorisieren, definiert ihr Kriterien – und Gally erledigt den Rest.
Beispiele für virtuelle Kategorien:
- „Sale“: Alle Produkte mit Rabatt > 20%
- „Neuheiten“: Produkte mit Erstellungsdatum in den letzten 30 Tagen
- „Bestseller“: Produkte mit Verkaufszahlen über Schwellenwert
- „Sommer-Kollektion“: Kombinierte Attribute (Saison + Verfügbarkeit)
Das Besondere: Änderungen greifen sofort. Kein Re-Index, kein Cronjob. Ein Produkt erhält einen Rabatt, und erscheint automatisch in der Sale-Kategorie. Diese Echtzeitfähigkeit unterscheidet Gally von vielen Konkurrenzlösungen.
Für Merchandiser bedeutet das: Weniger manuelle Arbeit, mehr Zeit für strategische Optimierung. Für Developer: Keine Custom-Logik für dynamische Kategorien mehr bauen.
Wie performt Gally bei großen Produktkatalogen?
Gally basiert auf Elasticsearch, das für die Verarbeitung großer Datenmengen konzipiert ist. Shops mit Millionen von Produkten profitieren von der horizontalen Skalierbarkeit.
Die Architektur unterstützt:
- Multi-Tenant-Setups: Mehrere Shops auf einer Gally-Instanz
- Mehrsprachige Kataloge: Separate Indizes pro Sprache für optimale Relevanz
- Auto-Scaling: Cloud-native Deployment ermöglicht dynamische Ressourcenanpassung
Performance-Tipps aus der Praxis:
Index-Struktur optimieren: Definiert suchbare und filterbare Attribute bewusst. Nicht jedes Attribut muss durchsuchbar sein.
Caching nutzen: Die API-Responses lassen sich hervorragend cachen. Ein CDN vor Gally reduziert die Last erheblich.
Bulk-Indexierung: Bei großen Datenmengen nutzt ihr die Bulk-APIs statt einzelner Requests.
Hardware anpassen: Elasticsearch ist speicherhungrig. Für Production-Umgebungen plant ihr mindestens 8 GB RAM für den ES-Node ein.
Welche KI-Features bietet Gally für personalisierte Suche?
Gally integriert KI-gestützte Features für smartere Suchergebnisse. Die semantische Suche nutzt Large Language Models, um die Suchintention besser zu verstehen – nicht nur Keywords.
Konkret bedeutet das:
- Semantisches Matching: „Bequemer Schuh für langes Stehen“ findet orthopädische Einlagen, obwohl keines dieser Worte im Produkttitel vorkommt
- Ranking basierend auf Nutzerverhalten: Häufig geklickte Produkte steigen im Ranking
- Personalisierte Empfehlungen: Die AI Recommendations Engine schlägt Produkte basierend auf Browsing-Historie und Käufen vor
Die KI-Features sind optional und lassen sich schrittweise aktivieren. Ihr könnt mit der klassischen Suche starten und später upgraden, ohne die gesamte Integration neu bauen zu müssen.
Wichtig für datensensible Projekte: Gally kann On-Premise betrieben werden. Eure Suchdaten verlassen niemals eure Infrastruktur, wenn ihr das nicht wollt – ein entscheidender Vorteil gegenüber Cloud-Only-Lösungen wie Algolia.
Praxisbeispiel: Gally in einer Sylius-Umgebung einrichten
Ein konkretes Beispiel für die Integration in ein bestehendes Sylius-Projekt:
1. Gally Server aufsetzen:
# Auf separatem Server oder als Docker Service
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker compose exec php bin/console hautelook:fixtures:load
2. Sylius Plugin installieren:
composer require gally/sylius-plugin
3. Routing konfigurieren:
# config/routes/gally_admin.yaml
gally_admin:
resource: "@GallySyliusPlugin/Resources/config/admin_routing.yml"
prefix: /admin
# config/routes/gally_shop.yaml
gally_shop:
resource: "@GallySyliusPlugin/Resources/config/shop_routing.yml"
prefix: /{_locale}
4. Channel Entity erweitern:
<?php
namespace AppEntityChannel;
use GallySyliusPluginModelGallyChannelInterface;
use GallySyliusPluginModelGallyChannelTrait;
class Channel implements GallyChannelInterface
{
use GallyChannelTrait;
// ...
}
5. Initiale Synchronisation:
php bin/console gally:catalog:sync
php bin/console gally:product:index
Ab jetzt übernimmt Gally die Suche. Produkt-Updates werden automatisch synchronisiert.
Euer nächster Schritt zu besserer E-Commerce-Suche
Gally bietet die perfekte Kombination aus Enterprise-Features und Open Source Freiheit. Für Symfony-Teams ist es die naheliegende Wahl: Vertraute Technologien, saubere APIs und keine versteckten Kosten.
Ob ihr eine bestehende Suchlösung ablösen oder einen neuen Shop aufbauen wollt – mit über 15 Jahren Expertise in Softwarequalität und Remote Consulting unterstützen wir euch bei Never Code Alone bei der Evaluierung und Implementierung.
Kontakt: roland@nevercodealone.de
Wir helfen euch, die richtige Architekturentscheidung zu treffen und Gally optimal in euren Stack zu integrieren. Keine theoretischen Konzepte, sondern praktische Lösungen, die eure Conversion messbar verbessern.
Never Code Alone – Gemeinsam für bessere Software-Qualität!
