Files
Infraviewer/README.md
2026-02-17 16:00:34 +01:00

204 lines
4.9 KiB
Markdown

# 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.