Skip to content

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:

Folgende Flyouts sind standardmässig parametriert:

  • Übersicht zeigt die Events des Indexers an.
  • Einträge zeigt die Einträge der Index-Queue an.
    • Indexieren: Setzt die ausgewählten Einträge auf den Status Created zurü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

  • ISearchDefinition

Activities

  • CreateIndex

  • DeleteSearchQueueAsync

  • DeleteSearchQueueItems

  • EditSearchMetadata

  • GetSearchDefinitionSchema

  • MigrationRegisterDefaultSea...

  • OptimizeIndex

  • ReInitSearchProvider

  • SetSearchQueueItemsAsCreated

  • StopIndexer

  • UpdateIndex

Queries

  • QuerySearchDefinitions

  • QuerySearchIndexQueue

  • QuerySearchStatus

ValueLists

  • ValueListEntityTypes

  • ValueListSupportedEntityTyp...

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