204 lines
4.9 KiB
Markdown
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.
|
|
|