# Infraviewer - Volltextsuche für MS SQL Server Express Eine leistungsstarke Webanwendung zur Durchführung von Volltextsuchen über mehrere Tabellen in einer MS SQL Server Express Datenbank. ## Features - 🔍 **Volltextsuche** über mehrere Tabellen gleichzeitig - 📊 **Übersichtliche Darstellung** der Suchergebnisse - ⚡ **Schnelle Performance** mit Connection Pooling - 🎨 **Moderne Benutzeroberfläche** mit responsivem Design - 📝 **Einfache Konfiguration** der zu durchsuchenden Tabellen und Spalten - 🔧 **REST API** für Integrationen ## Installation ### Voraussetzungen - Node.js (Version 14 oder höher) - MS SQL Server Express - npm oder yarn ### Schritte 1. **Abhängigkeiten installieren:** ```bash npm install ``` 2. **Umgebungsvariablen konfigurieren:** Kopieren Sie `.env.example` zu `.env` und passen Sie die Datenbankverbindung an: ```bash cp .env.example .env ``` Bearbeiten Sie `.env` mit Ihren Datenbankzugangsdaten: ```env DB_SERVER=localhost DB_PORT=1433 DB_DATABASE=IhreDatenbankName DB_USER=IhrBenutzername DB_PASSWORD=IhrPasswort DB_ENCRYPT=true DB_TRUST_SERVER_CERTIFICATE=true PORT=3000 ``` 3. **Suchkonfiguration anpassen:** Öffnen Sie `services/searchService.js` und passen Sie das `SEARCH_CONFIG` Array an Ihre Tabellen an: ```javascript const SEARCH_CONFIG = [ { tableName: 'IhreTabellenName', columns: ['Spalte1', 'Spalte2', 'Spalte3'], primaryKey: 'ID' }, // Weitere Tabellen hinzufügen... ]; ``` 4. **Server starten:** ```bash npm start ``` Für Entwicklung mit automatischem Neustart: ```bash npm run dev ``` 5. **Anwendung öffnen:** Öffnen Sie Ihren Browser und navigieren Sie zu: `http://localhost:3000` ## Verwendung ### Web-Oberfläche 1. Öffnen Sie die Anwendung in Ihrem Browser 2. Geben Sie Ihren Suchbegriff in das Suchfeld ein 3. Klicken Sie auf "Suchen" oder drücken Sie Enter 4. Die Ergebnisse werden übersichtlich nach Tabellen gruppiert angezeigt ### API-Endpunkte #### Suche durchführen ``` GET /api/search?q=suchbegriff ``` **Antwort:** ```json { "success": true, "searchTerm": "suchbegriff", "totalMatches": 15, "tablesSearched": 10, "results": [ { "tableName": "Kunden", "matchCount": 5, "records": [...] } ] } ``` #### Verfügbare Tabellen abrufen ``` GET /api/search/tables ``` #### Spalten einer Tabelle abrufen ``` GET /api/search/tables/:tableName ``` #### Suchkonfiguration anzeigen ``` GET /api/search/config ``` #### Health Check ``` GET /api/health ``` ## Konfiguration ### Tabellen hinzufügen/ändern Bearbeiten Sie `services/searchService.js` und fügen Sie neue Einträge zum `SEARCH_CONFIG` Array hinzu: ```javascript { tableName: 'NeueTabelle', // Name der Tabelle in der Datenbank columns: ['Spalte1', 'Spalte2'], // Spalten, die durchsucht werden sollen primaryKey: 'ID' // Primärschlüssel der Tabelle } ``` ### Suchverhalten anpassen Die Suche verwendet standardmäßig das SQL `LIKE` Pattern mit Wildcards (`%suchbegriff%`). Dies findet den Suchbegriff überall in den konfigurierten Spalten. Für weitere Anpassungen können Sie die Funktion `buildSearchCondition` in `services/searchService.js` modifizieren. ## Projektstruktur ``` infraviewer/ ├── config/ │ └── database.js # Datenbankkonfiguration ├── services/ │ └── searchService.js # Such-Logik ├── routes/ │ └── search.js # API-Routen ├── public/ │ └── index.html # Web-Oberfläche ├── server.js # Express-Server ├── package.json # Abhängigkeiten ├── .env.example # Beispiel-Umgebungsvariablen └── README.md # Diese Datei ``` ## Sicherheitshinweise - ✅ Verwendet parametrisierte Queries zum Schutz vor SQL-Injection - ✅ `.env` Datei wird nicht ins Repository commited (.gitignore) - ✅ Passwörter werden niemals im Code gespeichert - ⚠️ Stellen Sie sicher, dass der Datenbankbenutzer nur die benötigten Berechtigungen hat (READ-only für Suche) ## Fehlerbehebung ### Verbindungsfehler - Überprüfen Sie die Datenbankverbindungsparameter in `.env` - Stellen Sie sicher, dass SQL Server läuft und TCP/IP aktiviert ist - Prüfen Sie die Firewall-Einstellungen ### Tabellen nicht gefunden - Überprüfen Sie die Schreibweise der Tabellennamen in `SEARCH_CONFIG` - Stellen Sie sicher, dass der Datenbankbenutzer Leserechte auf die Tabellen hat - Verwenden Sie `/api/search/tables` um alle verfügbaren Tabellen anzuzeigen ### Performance-Probleme - Erstellen Sie Indizes auf häufig durchsuchten Spalten - Reduzieren Sie die Anzahl der durchsuchten Spalten - Erwägen Sie die Verwendung von SQL Server Full-Text Search für große Datenmengen ## Lizenz ISC ## Support Bei Fragen oder Problemen öffnen Sie bitte ein Issue im Repository.