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 einheitlich 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 kombiniert.
Beispiel für die Abfrageinterpretation
Nehmen wir an, es gibt eine Datenbank mit Filminformationen. 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 erfolgt automatisch für alle Nutzer. 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:
- „action movies“ ->
genre:action object:movies - „movies with genre action or thriller“ ->
objecttype:movies genre:(action OR thriller) - „comedy category movies“ ->
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. Wenn Sie die Sortierung aktivieren möchten, legen Sie isSortable fest.
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:
- „movies released this year“ ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - „movies with runtime less than 90“ ->
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: „action videos“ 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 kombiniert.