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:
| Modus | Beschreibung | Voraussetzungen |
|---|---|---|
ATTRIBUTE_FILTER | Sucht in angegebenen Attributen mittels Wildcard-Abgleich | attributePaths muss angegeben werden |
TEXT_SEARCH | Verwendet den Volltextsuchindex der Datenbank | Textindex 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:
- Einen für den Entitätstyp im Construction Kit konfigurierten Textindex (
indexType=Text) - 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:
| Code | Sprache |
|---|---|
en | Englisch |
de | Deutsch |
fr | Französisch |
es | Spanisch |
it | Italienisch |
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
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
searchTerm | String | Ja | Der zu suchende Text |
type | SearchFilterType | Ja | Entweder ATTRIBUTE_FILTER oder TEXT_SEARCH |
attributePaths | [String] | Für ATTRIBUTE_FILTER | Liste von Attributpfaden, in denen gesucht wird |
language | String | Für TEXT_SEARCH | Sprachcode für die Volltextsuche |
SearchFilter vs. FieldFilter
| Merkmal | SearchFilter | FieldFilter |
|---|---|---|
| Zweck | Textsuche über mehrere Attribute hinweg | Präzise Filterung auf einem einzelnen Attribut |
| Datentypen | Für Text/Strings optimiert | Funktioniert mit allen Typen (Text, Zahlen, Booleans usw.) |
| Abgleichsart | Wildcard oder Volltext | Exakter Abgleich oder operatorbasiert |
| Anwendungsfall | Suchfelder in der UI | Datenfilterung, 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:
- Sucht nach „production" in name und description
- Filtert nur bereitgestellte Adapter
- Sortiert die Ergebnisse nach name
- Gibt die ersten 20 Ergebnisse mit Pagination zurück
Best Practices
- Wählen Sie den richtigen Modus: Verwenden Sie
ATTRIBUTE_FILTERfür einfache Suchen,TEXT_SEARCH, wenn Volltextindizierung verfügbar ist - Begrenzen Sie die Attributpfade: Nehmen Sie nur Attribute auf, die für die Suche relevant sind, um die Performance zu verbessern
- Kombinieren Sie mit Pagination: Verwenden Sie bei der Suche immer Pagination, um große Ergebnismengen zu handhaben
- Verwenden Sie FieldFilter für Nicht-Text-Daten: SearchFilter ist nicht für die Suche nach Ganzzahlen, Booleans oder Datumsangaben gedacht
- 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