Suchanfragen¶
Für die Suchen nach bestimmten Objekten wie Produkten und Benutzer steht ein Suchpresenter zur Verfügung. Diese Suchpresenter verfügen über eine Queryparser, der es erlaubt bestimmte Suchanfragen an den Server zu senden.
Die Abfragesprache ist an SQL angeleht aber es steht nicht der volle Funktionsumfang von SQL zur Verfügung. In den nachfolgenden Beispielen werden die Felder der Benutzer-API verwendet.
Einfache Feldabfragen¶
Bei Feldabfragen wird der Feldname gefolgt von einem Operator und einem Wert definiert. Gültige
Operatoren sind: =
, <
, >
, <=
, >=
, LIKE
, NOT LIKE
, NOT
, RLIKE
, IN
// Datensatz mit der UID 1 suchen
uid=1
// Alle Datensätze suchen die eine UID größer 10 haben
uid>10
// Alle Datensätze suchen die eine UID größer gleich 10 haben
uid>=10
// Alle Datensätze deren Name mit hans beginnt
name LIKE "hans%"
// Alle Datensätze in der die 2 in der Mehrfach Zuweisung catalogingAssignmentABID2 enthalten ist
2 IN catalogingAssignmentABID2
// Alle Datensätze in der die CID in der Kommaliste enthalten ist
cid IN "2,3,6,4"
Die Werte einer Abfrage können Boolean (true/false), Null, eine Zahl oder eine Zeichenkette sein.
// Integer als Wert
uid=1
// Null als Wert
uid=NULL
// Zeichenkette als Wert
uid="hello"
// Boolean als Wert
uid=true
Mehrere Ausdrücke können über AND
und OR
verknüpft werden.
// UID größer 10 und kleiner 20
uid>10 AND UID<10
// UID kleiner 10 oder größer 20
uid<10 OR UID>10
Hinweis
Wird OR
und AND
gemischt, so werden alle OR
Operatoren automatisch
geklammert. A OR B AND C
wird zu (A OR B) AND C
Facettensuche¶
Bei Suchanfragen die Facetten besitzen können die Namen der Facetten den Felder vorangestellt werden. Dies ist immer dann notwendig, wenn der gewünschte Feldname nicht eindeutig ist.
// Suche nach den Feldern uid in address und personal
personal.uid=10 AND address.UID=10
Funktionen¶
Über die Abfragesprachen können auch Funktionen definiert sein. Die Funktion IN
erlaubt die Suche nache
einem Wert in einer Liste .
// Alle Datensätze die in einer Liste enthalten sind
uid IN "1,2,3,4"
URL Codieren¶
Der Parameter ´q´ muss URL Codiert übergeben werden
´´´ itemIID IN "500,1001" AND language=de
/api/commerce/item/text/search?q=itemIID%20IN%20%22500,1001%22%20AND%20language%3Dde&count=50 ´´´