InitalCommit
This commit is contained in:
203
README.md
Normal file
203
README.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user