Zum Hauptinhalt springen

SearchFilter

Der SearchFilter bietet Textsuchfunktionen über mehrere Attribute einer Entität hinweg. Er ist für textbasierte Suchen optimiert und wird typischerweise für Suchfelder in Listenansichten verwendet.

Suchmodi​

Der SearchFilter unterstützt zwei verschiedene Suchmodi über den Parameter type:

ModusBeschreibungVoraussetzungen
ATTRIBUTE_FILTERSucht in angegebenen Attributen mittels Wildcard-AbgleichattributePaths muss angegeben werden
TEXT_SEARCHVerwendet den Volltextsuchindex der DatenbankTextindex muss im Construction Kit konfiguriert sein, language muss angegeben werden

ATTRIBUTE_FILTER-Modus​

Der ATTRIBUTE_FILTER-Modus sucht in explizit angegebenen Attributen. Der Suchbegriff wird automatisch mit Wildcards umschlossen (z. B. wird aus test *test*).

query {
runtime {
systemCommunicationDataFlow(
searchFilter: {
searchTerm: "eda"
type: ATTRIBUTE_FILTER
attributePaths: ["name"]
}
) {
items {
rtId
name
description
}
}
}
}

Mehrere Attribute​

Sie können mehrere Attribute gleichzeitig durchsuchen:

query {
runtime {
energyCommunityCustomer(
searchFilter: {
searchTerm: "berlin"
type: ATTRIBUTE_FILTER
attributePaths: ["contact.firstName", "contact.lastName", "contact.address.cityTown"]
}
) {
items {
rtId
contact {
firstName
lastName
address {
cityTown
}
}
}
}
}
}

Diese Abfrage sucht nach „berlin" in den Feldern Vorname, Nachname und Stadt.

TEXT_SEARCH-Modus​

Der TEXT_SEARCH-Modus verwendet einen Volltextsuchindex der Datenbank für effizienteres und sprachlich bewusstes Suchen. Dieser Modus erfordert:

  1. Einen für den Entitätstyp im Construction Kit konfigurierten Textindex (indexType=Text)
  2. Einen Parameter language, der die Sprache für den Textabgleich angibt
query {
runtime {
systemCommunicationDataFlow(
searchFilter: {
searchTerm: "simulation"
type: TEXT_SEARCH
language: "en"
}
) {
items {
rtId
name
description
}
}
}
}

Unterstützte Sprachen​

Der Parameter language akzeptiert Standard-Sprachcodes. Gängige Werte sind:

CodeSprache
enEnglisch
deDeutsch
frFranzösisch
esSpanisch
itItalienisch

Textindex konfigurieren​

Um den TEXT_SEARCH-Modus zu verwenden, muss für den Entitätstyp ein Textindex im Construction Kit konfiguriert sein. Dies geschieht, indem indexType=Text an den relevanten Attributen gesetzt wird.

Struktur des SearchFilter​

FeldTypErforderlichBeschreibung
searchTermStringJaDer zu suchende Text
typeSearchFilterTypeJaEntweder ATTRIBUTE_FILTER oder TEXT_SEARCH
attributePaths[String]Für ATTRIBUTE_FILTERListe von Attributpfaden, in denen gesucht wird
languageStringFür TEXT_SEARCHSprachcode für die Volltextsuche

SearchFilter vs. FieldFilter​

MerkmalSearchFilterFieldFilter
ZweckTextsuche über mehrere Attribute hinwegPräzise Filterung auf einem einzelnen Attribut
DatentypenFür Text/Strings optimiertFunktioniert mit allen Typen (Text, Zahlen, Booleans usw.)
AbgleichsartWildcard oder VolltextExakter Abgleich oder operatorbasiert
AnwendungsfallSuchfelder in der UIDatenfilterung, Statusprüfungen

Wann SearchFilter verwenden​

  • Sucheingabefelder in Listenansichten
  • Freitextsuche für Benutzer
  • Gleichzeitiges Suchen über mehrere Textattribute hinweg

Wann FieldFilter verwenden​

  • Filtern nach bestimmten Werten (z. B. state = "ON")
  • Numerische Vergleiche (z. B. voltage > 220)
  • Boolean-Prüfungen
  • Filtern nach Enum-Werten

Kombination mit anderen Parametern​

SearchFilter kann mit fieldFilter, sortOrder und Pagination kombiniert werden:

query getAdapters(
$after: String
$first: Int
$searchFilter: SearchFilter
$fieldFilters: [FieldFilter]
$sort: [Sort]
) {
runtime {
systemCommunicationAdapter(
after: $after
first: $first
searchFilter: $searchFilter
fieldFilter: $fieldFilters
sortOrder: $sort
) {
pageInfo {
endCursor
hasNextPage
}
totalCount
items {
rtId
name
description
deploymentState
}
}
}
}

Variablen:

{
"first": 20,
"searchFilter": {
"searchTerm": "production",
"type": "ATTRIBUTE_FILTER",
"attributePaths": ["name", "description"]
},
"fieldFilters": [
{ "attributePath": "deploymentState", "operator": "EQUALS", "comparisonValue": "DEPLOYED" }
],
"sort": [
{ "attributePath": "name", "sortOrder": "ASCENDING" }
]
}

Diese Abfrage:

  1. Sucht nach „production" in name und description
  2. Filtert nur bereitgestellte Adapter
  3. Sortiert die Ergebnisse nach name
  4. Gibt die ersten 20 Ergebnisse mit Pagination zurück

Best Practices​

  1. Wählen Sie den richtigen Modus: Verwenden Sie ATTRIBUTE_FILTER für einfache Suchen, TEXT_SEARCH, wenn Volltextindizierung verfügbar ist
  2. Begrenzen Sie die Attributpfade: Nehmen Sie nur Attribute auf, die für die Suche relevant sind, um die Performance zu verbessern
  3. Kombinieren Sie mit Pagination: Verwenden Sie bei der Suche immer Pagination, um große Ergebnismengen zu handhaben
  4. Verwenden Sie FieldFilter für Nicht-Text-Daten: SearchFilter ist nicht für die Suche nach Ganzzahlen, Booleans oder Datumsangaben gedacht
  5. Richten Sie Textindizes ein: Konfigurieren Sie für häufig durchsuchte Entitätstypen Textindizes im Construction Kit für bessere Performance mit dem TEXT_SEARCH-Modus