Search
Beschreibung
Funktionalität
Die Suche lässt sich für jede Entität individuell konfigurieren.
Folgende Anwendungsfälle werden unterstützt:
- Live-Suche mit Suchvorschlägen während der Eingabe sowie Standardsuche nach dem Absenden einer Suchanfrage.
- Exakte (
Muster), teilqualifizierte (Muste*) und unscharfe Suchanfragen (Muste~). - Einschränkung der Suchresultate mithilfe von Facets.
Überwachung im Betrieb
Im Raum Betrieb wird die Indexierung überwacht und gesteuert:
Index erstellen: ruft Activity CreateIndex auf (siehe auch Index nachgenerieren).Index aktualisieren: ruft Activity UpdateIndex auf.Aktualisierung stoppen: ruft Activity StopIndexer auf.Index optimieren: ruft Activity OptimizeIndex auf.Index-Queue löschen: ruft Activity DeleteSearchQueueAsync auf.
Folgende Flyouts sind standardmässig parametriert:
Übersichtzeigt die Events des Indexers an.Einträgezeigt die Einträge der Index-Queue an.Indexieren: Setzt die ausgewählten Einträge auf den StatusCreatedzurück. Dadurch werden sie erneut indexiert.Löschen: Löscht die markierten Items.
Parametrierung Raum System
Die Suche wird im Raum System unter Such-Definition parametriert.
Technische Umsetzung
Die technische Umsetzung basiert auf dem Framework Lucene.NET.
Bausteine
Entities
Activities
Queries
ValueLists
Expression Functions
Keine passenden Einträge gefunden.
Tabellen
Configs
| Parameter | Beschreibung | Beispiel |
|---|---|---|
AllowLeadingWildcard |
Ist ein * am Anfang der Suchanfrage erlaubt? (true/false) |
true |
AutoStartSearchIndexer |
Soll der Indexer beim Start der Anwendung automatisch gestartet werden? (true/false) |
true |
DirectoryType |
Verwendeter Verzeichnistyp. Fix FSDirectory | FSDirectory |
FuzzyPrefixLength |
Definiert, wie viele Zeichen bei einer unscharfen Suche (~) exakt übereinstimmen müssen. Werte < 2 haben erheblichen Einfluss auf die Suchperformance |
2 |
ReaderReopenIntervalSeconds |
Definiert, wie lange (in Sekunden) ein nicht mehr aktueller Index für Suchanfragen noch verwendet werden darf. | 5 |
Tipps
Index nachgenerieren
Mit Activity CreateIndex werden die Entitäten paketweise (25’000 Einträge), sortiert nach PublicId, geladen und indexiert.
Wichtig!
Damit jede Entität genau einmal indexiert wird, ist es wichtig, dass während der Indexierung keine Entitäten erfasst oder gelöscht werden.
Soll der Index im laufenden Betrieb aktualisiert werden, kann dies über die normale Aktualisierung erfolgen. Für jede zu indexierende Entität wird dazu ein Eintrag in der Index-Queue erstellt.
INSERT INTO [elego].[SEARCH_INDEX_QUEUE]
(
[SIQ_G_ID], [SIQ_N_VERSION], [SIQ_D_INSERTED_ON], [SIQ_D_UPDATED_ON],
[SIQ_D_CREATED_ON], [SIQ_D_MODIFIED_ON],[SIQ_S_OBJECT_TYPE],
[SIQ_G_OBJECT_ID],[SIQ_S_STATUS]
)
Select NEWID(), 1, GETDATE(), GETDATE(), GETDATE(), GETDATE(),
'IDossier', DOS_G_ID, 'Created'
from business.DOSSIER