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.

★ 1stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/ayonto-digital-solutions/multiindex-search/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

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