WP Manifestindependent plugin directory
manifest / integrations / multiindex-search

AS Multiindex Search

Eine föderierte Suche für WordPress, die native WordPress-Inhalte und mehrsprachige, externe Produktfeeds (XML, CSV, JSON) in einer nahtlosen AJAX-Suche zusammenführt.

by Marc Mirschel · github.com/ayonto-digital-solutions/multiindex-search · website

1stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/ayonto-digital-solutions/multiindex-search/archive/refs/heads/main.zip

Readme

AS Multiindex Search

Eine föderierte Suche für WordPress, die native WordPress-Inhalte und mehrsprachige, externe Produktfeeds (XML, CSV, JSON) in einer nahtlosen AJAX-Suche zusammenführt.

🌟 Features

Kern-Funktionalitäten

  • Multi-Source-Suche: Durchsucht gleichzeitig WordPress-Inhalte und externe Produktfeeds
  • Mehrsprachigkeit: Vollständige Unterstützung für Deutsch und Englisch
  • Feed-Import: Unterstützt XML, CSV und JSON Formate
  • Intelligente Indexierung: Asynchrone Verarbeitung großer Datenmengen mit Änderungserkennung
  • ChatGPT-Integration: Optionale KI-gestützte Inhaltsanalyse und Übersetzung

Erweiterte Features

  • REST API: Vollständige API für externe Integrationen
  • High-Speed Indexing: Optimierte Verarbeitung für große Datenmengen
  • Smart Caching: Intelligente Cache-Verwaltung für optimale Performance
  • URL-basiertes Bild-Caching: Vermeidet Duplikate und reduziert Speicherverbrauch drastisch
  • Intelligente Änderungserkennung: Lädt Bilder nur bei tatsächlichen Änderungen herunter (>95% Einsparung)
  • Automatisches Image Cleanup: Garbage Collection für verwaiste Bilder
  • Export/Import: WordPress-Index als CSV exportieren und importieren
  • Marken-Erkennung: Automatische Erkennung und Kategorisierung von Marken
  • Bindestrich-Suche: Intelligente Behandlung von Begriffen mit Bindestrichen
  • Keyword-Fallback: Automatische Keyword-Extraktion auch ohne ChatGPT

🚀 Schnellstart

# 1. Plugin installieren
wp plugin install as-multiindex-search.zip --activate

# 2. Feed-URLs konfigurieren
# Admin → Multiindex → Allgemein

# 3. Ersten Import starten
# Admin → Multiindex → Index → "Start Import"

Detaillierte Installationsanleitung: Siehe INSTALLATION.md

📦 Voraussetzungen

  • WordPress 5.8 oder höher
  • PHP 7.4 oder höher
  • MySQL 5.6 oder höher (mit FULLTEXT-Support)
  • WP-Cron aktiviert (oder alternatives Cron-Setup)
  • Mindestens 256MB PHP Memory Limit

⚙️ Grundkonfiguration

1. Feed-URLs einrichten

Admin → Multiindex → Allgemein
├── Deutsche Feeds: https://example.com/feed-de.xml
└── Englische Feeds: https://example.com/feed-en.xml

2. Mapping konfigurieren

Admin → Multiindex → Mapping
├── Preset wählen: Shopware 6
└── Oder Custom Mapping definieren

3. Bildverwaltung aktivieren

Admin → Multiindex → System
├── Image Storage Mode: Local ✓
├── Enable Daily Reindexing: ✓ (um 1:00 Uhr)
└── Image Cleanup: Automatisch (täglich um 3:00 Uhr)

4. ChatGPT Integration (Optional)

Admin → Multiindex → API
├── ChatGPT aktivieren: ✓
├── API Key: sk-...
└── Model: gpt-4o-mini (empfohlen)

📝 Verwendung

Shortcode

// Deutsche Suche
[multiindex_search lang="de"]

// Englische Suche
[multiindex_search lang="en"]

REST API

# Suche durchführen
GET /wp-json/asmi/v1/search?q=batterie&lang=de

# Index-Status abrufen
GET /wp-json/asmi/v1/index/status

# WordPress-Inhalte neu indexieren
POST /wp-json/asmi/v1/wp-index/start

PHP-Integration

// Direkte Suche
$results = asmi_unified_search('batterie', 20, 'de');

// Feed-Import starten
asmi_index_reset_and_start();

// Bild mit Caching herunterladen
$local_url = asmi_download_image_to_local_dir($remote_url);

🎯 Neue Features in v1.11.2

Intelligente Änderungserkennung

  • Problem behoben: Bilder wurden bei jedem täglichen Durchlauf erneut heruntergeladen
  • Lösung: Content-Hash und Image-URL-Hash prüfen Änderungen
  • Ergebnis: >95% weniger Bild-Downloads

Optimierte Produktverwaltung

  • Keine komplette Löschung mehr bei jedem Durchlauf
  • Nur Updates/Inserts für geänderte/neue Produkte
  • Automatische Entfernung obsoleter Produkte inkl. Bilder

Erweiterte Statistiken

Indexierungs-Report:
├── Neue Produkte: 45
├── Aktualisierte Produkte: 12
├── Bilder wiederverwendet: 1.234
└── Bilder heruntergeladen: 57

📊 Performance

Speicher-Optimierung (seit v1.11.0)

  • Vorher: ~26GB Bild-Cache
  • Nachher: ~6-7GB Bild-Cache
  • Einsparung: ~75% durch URL-basiertes Caching

Download-Optimierung (v1.11.2)

  • Vorher: 100% Downloads bei jedem Durchlauf
  • Nachher: <5% Downloads (nur bei Änderungen)
  • Einsparung: >95% weniger Bandbreite

Indexierungs-Performance

  • Batch-Size: 200 Einträge (konfigurierbar)
  • Such-Performance: <100ms für durchschnittliche Suchen
  • API-Effizienz: ~80% weniger ChatGPT-Calls durch Change Detection

🔧 Entwickler-Dokumentation

Wichtige Hooks

// Nach erfolgreicher Indexierung
add_action('asmi_after_index_complete', function($stats) {
    error_log('Indexing completed: ' . $stats['processed_items'] . ' items');
});

// Suchergebnisse modifizieren
add_filter('asmi_search_results', function($results, $query, $lang) {
    // Ergebnisse anpassen
    return $results;
}, 10, 3);

// Bildverarbeitung anpassen
add_filter('asmi_should_download_image', function($should_download, $url) {
    // Entscheidung ob Bild geladen werden soll
    return $should_download;
}, 10, 2);

Datenbank-Struktur

CREATE TABLE wp_asmi_index (
    id BIGINT(20) UNSIGNED AUTO_INCREMENT,
    source_id VARCHAR(255) NOT NULL,
    lang VARCHAR(10) NOT NULL,
    source_type VARCHAR(20) NOT NULL,
    title TEXT NOT NULL,
    content LONGTEXT,
    excerpt TEXT,
    url VARCHAR(2048),
    image VARCHAR(2048),
    image_url_hash VARCHAR(32),      -- NEU in v1.11.0
    content_hash VARCHAR(64),        -- NEU in v1.11.2
    last_modified DATETIME,          -- NEU in v1.11.2
    price VARCHAR(50),
    sku VARCHAR(100),
    gtin VARCHAR(100),
    raw_data LONGTEXT,
    indexed_at DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY unq_source (source_id, lang, source_type),
    KEY idx_image_hash (image_url_hash),
    KEY idx_content_hash (content_hash),
    FULLTEXT KEY ft_search (title, content, excerpt, sku, gtin)
);

🛠️ Debugging

Debug-Modus aktivieren

// In Plugin-Einstellungen:
Admin → Multiindex → System → Debug Mode ✓

// Logs ansehen:
tail -f wp-content/debug.log | grep "ASMI"

Typische Log-Ausgaben

[ASMI DEBUG] Image URL unchanged for product ABC123, reusing existing image
[ASMI DEBUG] Image URL changed for product XYZ789, downloading...
[ASMI DEBUG] CLEANUP: Deleted 15 obsolete products and their images

📈 Changelog

Siehe CHANGELOG.md für detaillierte Versionshistorie.

Aktuelle Version: 1.11.2 (19. November 2025)

  • Intelligente Änderungserkennung für Bilder
  • Optimierte Produktverwaltung ohne komplette Löschung
  • Detaillierte Statistiken (new/updated/reused/downloaded)
  • Automatische Bereinigung obsoleter Produkte

🤝 Support & Entwicklung

Support

Fehler melden

Erstellen Sie detaillierte Bug-Reports mit:

  • WordPress-Version
  • PHP-Version
  • Debug-Log (aktiviert im Plugin)
  • Schritte zur Reproduktion

Beitragen

Pull Requests sind willkommen! Beachten Sie:

  • WordPress Coding Standards
  • PHPDoc für alle Funktionen
  • Internationalisierung (i18n)
  • Security Best Practices

📄 Lizenz

GPL-2.0+ - Siehe LICENSE

🙏 Credits

  • Entwicklung: Marc Mirschel
  • Sponsor: AKKUSYS GmbH
  • APIs: OpenAI (ChatGPT), DeepL
  • Framework: WordPress

🎯 Roadmap

In Entwicklung

  • [ ] Levenshtein-Distanz für Tippfehlerkorrektur
  • [ ] Such-Analytics Dashboard
  • [ ] Performance-Monitoring
  • [ ] Autocomplete-Vorschläge

Geplant

  • [ ] Facettierte Filterung
  • [ ] Personalisierte Empfehlungen
  • [ ] GraphQL API
  • [ ] Elasticsearch-Integration

AS Multiindex Search - Intelligente föderierte Suche für WordPress und externe Datenquellen

Entwickelt von Marc Mirschel für AKKUSYS GmbH

Read the full README on GitHub →