Bei der Abfrageinterpretation in Cloud Search werden Operatoren und Filter in der Abfrage eines Nutzers automatisch in eine strukturierte, operatorbasierte Abfrage umgewandelt. Dabei werden Operatoren verwendet, die im Schema und in indexierten Dokumenten definiert sind, um die Suchabsicht abzuleiten. So können Nutzer mit minimalen Keywords suchen und präzise Ergebnisse erhalten.
Die Darstellung der Ergebnisse hängt vom Konfidenzwert ab. Der Konfidenzwert steigt, wenn Abfragestrings konsistent in bestimmten Schemafeldern vorkommen (z.B. „Tom Hanks“ im Feld actors). Der Konfidenzwert sinkt, wenn Strings in allgemeinem Text vorkommen. Bei einem hohen Konfidenzwert werden nur interpretierte Ergebnisse angezeigt, bei einem niedrigeren Konfidenzwert werden sie mit standardmäßigen Keyword-Ergebnissen gemischt.
Beispiel für die Abfrageinterpretation
Nehmen wir eine Datenbank mit Filminformationen an. Abbildung 1 zeigt eine Beispielsuchanfrage und ihre Interpretation.
In diesem Beispiel wird die Abfrage so interpretiert:
- Aus dem Schema wird ermittelt, dass die Objekte der obersten Ebene
objecttype:moviessind. - Dokumente werden gescannt, um zu ermitteln, wo „Action“ vorkommt. Wenn der Begriff hauptsächlich im Feld
genrevorkommt, steigt der Konfidenzwert, dass es sich um einen Attributwert für dieses Feld handelt.
Die resultierende Interpretation lautet:
actor:"tom hanks" genre:action objecttype:movies
Die Abfrageinterpretation ist für alle Nutzer automatisch verfügbar. Sie können sie jedoch optimieren, indem Sie Ihr Schema so strukturieren, wie in den folgenden Abschnitten beschrieben.
Schema für die Abfrageinterpretation strukturieren
Wenn Sie Ihr Schema optimieren, können Sie die Abfrageinterpretation optimal nutzen.
Interpretationen von Anzeigenamen aktivieren
Bei der Abfrageinterpretation werden objectDefinitions und propertyDefinitions verwendet, um Abfragen zu interpretieren. Erstellen Sie intuitive Anzeigenamen mit
displayLabel
für Attribute,
objectDisplayLabel
für Objekte und operatorName für Operatoren.
Dieses Beispiel zeigt intuitive Anzeigenamen für ein Filmobjekt:
{
"objectDefinitions": [{
"name": "movie",
"options": {
"displayOptions": { "objectDisplayLabel": "Films" }
},
"propertyDefinitions": [{
"name": "genre",
"isReturnable": true,
"textPropertyOptions": {
"operatorOptions": { "operatorName": "genre" }
},
"displayOptions": { "displayLabel": "Category" }
}]
}]
}
Diese Anzeigenamen ermöglichen Interpretationen wie:
- „Actionfilme“ ->
genre:action object:movies - „Filme mit dem Genre Action oder Thriller“ ->
objecttype:movies genre:(action OR thriller) - „Filme der Kategorie Komödie“ ->
genre:comedy objecttype:movies
Interpretationen für Datum, Zahlen und Sortierung aktivieren
Definieren Sie lessThanOperatorName und greaterThanOperatorName in
IntegerOperatorOptions
für alle Datums- und Zahlenattribute. Setzen Sie isSortable, um die Sortierung zu aktivieren.
In diesem Beispiel werden diese Optionen aktiviert:
{
"objectDefinitions": [{
"propertyDefinitions": [
{
"name": "runtime",
"isSortable": true,
"integerPropertyOptions": {
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
}
},
{
"name": "releasedate",
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
Diese Einstellungen ermöglichen Interpretationen wie:
- „Filme, die dieses Jahr veröffentlicht wurden“ ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - „Filme mit einer Laufzeit von weniger als 90 Minuten“ ->
objecttype:movies runtimelessthan:90
Interpretation reservierter Operatoren aktivieren
Verwenden Sie integrierte Operatoren wie type, before, after, und objecttype:
- Füllen Sie
updateTimeinItemMetadataaus, umbeforeundafterzu verwenden. - Füllen Sie
mimeTypeinItemMetadatafür die automatische Erkennung aus. Beispiel: „Actionvideos“ listet Dokumente mit Video-MIME-Typen auf.
Einschränkungen bei der Abfrageinterpretation
- Funktioniert nur für diese ACLs von Datenquellen:
- Öffentlich in der Domain
- Öffentlich für die Datenquelle
- Die meisten Dokumente haben dieselbe vererbte ACL.
- Gemeinsame Operatornamen (z.B.
priorityundseveritymit jeweils 0–3) senken den Konfidenzwert. - Standardmäßig werden bei der Interpretation Kleinbuchstaben für Feldwerte verwendet, es sei denn, Sie verwenden
exactMatchWithOperator. - Der Operator
sourcewird nicht unterstützt. - Kombinierte Operatoren und Freitextbegriffe (z.B. „p0 cases severity:s0“) werden nicht interpretiert.
- Die Ergebnisse werden immer mit nach Relevanz sortierten Ergebnissen gemischt.