Cloud Search interpretacja zapytań automatycznie przekształca operatory i filtry w zapytaniu użytkownika w uporządkowane zapytanie oparte na operatorach. Ta funkcja korzysta z operatorów zdefiniowanych w schemacie i indeksowanych dokumentach, aby określić intencję zapytania. Dzięki temu użytkownicy mogą wyszukiwać, używając minimalnej liczby słów kluczowych, i uzyskiwać dokładne wyniki.
Prezentacja wyników zależy od poziomu ufności. Poziom ufności wzrasta, gdy ciągi zapytania konsekwentnie pojawiają się w określonych polach schematu (np. „Tom Hanks” w polu actors). Poziom ufności maleje, gdy ciągi pojawiają się w ogólnym tekście. W przypadku wysokiego poziomu ufności wyświetlane są tylko zinterpretowane wyniki, a w przypadku niższego poziomu ufności są one mieszane ze standardowymi wynikami słów kluczowych.
Przykład interpretacji zapytania
Załóżmy, że mamy bazę danych zawierającą informacje o filmach. Na rysunku 1 przedstawiono przykładowe zapytanie i jego interpretację.
W tym przykładzie interpretacja zapytania:
- na podstawie schematu określa, że obiekty najwyższego poziomu to
objecttype:movies. - skanuje dokumenty, aby określić, gdzie występuje słowo „akcja”. Jeśli występuje ono głównie w polu
genre, poziom ufności wzrasta, co oznacza, że jest to wartość właściwości tego pola.
Wynikowa interpretacja to:
actor:"tom hanks" genre:action objecttype:movies
Interpretacja zapytań jest automatyczna dla wszystkich użytkowników, ale możesz ją zoptymalizować, tworząc schemat w sposób opisany w kolejnych sekcjach.
Tworzenie schematu na potrzeby interpretacji zapytań
Optymalizacja schematu zapewnia korzystanie z interpretacji zapytań.
Włączanie interpretacji wyświetlanych nazw
Interpretacja zapytań korzysta z objectDefinitions i propertyDefinitions. Twórz intuicyjne wyświetlane nazwy, używając
displayLabel
dla właściwości, objectDisplayLabel
dla obiektów i operatorName dla operatorów.
Ten przykład pokazuje intuicyjne wyświetlane nazwy obiektu filmu:
{
"objectDefinitions": [{
"name": "movie",
"options": {
"displayOptions": { "objectDisplayLabel": "Films" }
},
"propertyDefinitions": [{
"name": "genre",
"isReturnable": true,
"textPropertyOptions": {
"operatorOptions": { "operatorName": "genre" }
},
"displayOptions": { "displayLabel": "Category" }
}]
}]
}
Te wyświetlane nazwy umożliwiają interpretacje takie jak:
- „filmy akcji” ->
genre:action object:movies - „filmy z gatunku akcji lub thriller” ->
objecttype:movies genre:(action OR thriller) - „filmy z kategorii komedia” ->
genre:comedy objecttype:movies
Włączanie interpretacji dat, liczb i sortowania
W przypadku wszystkich właściwości dat i liczb zdefiniuj lessThanOperatorName i greaterThanOperatorName w
IntegerOperatorOptions. Aby włączyć sortowanie, ustaw isSortable.
Ten przykład włącza te opcje:
{
"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"
}
}
}
]
}]
}
Te ustawienia umożliwiają interpretacje takie jak:
- „filmy wydane w tym roku” ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - „filmy o czasie trwania krótszym niż 90 minut” ->
objecttype:movies runtimelessthan:90
Włączanie interpretacji zastrzeżonych operatorów
Używaj wbudowanych operatorów, takich jak type, before, after i objecttype:
- Aby używać operatorów
beforeiafter, wypełnij poleupdateTimewItemMetadata. - Aby włączyć automatyczne wykrywanie, wypełnij pole
mimeTypewItemMetadata. Na przykład „filmy akcji” wyświetla dokumenty z typami MIME wideo.
Ograniczenia interpretacji zapytań
- Działa tylko w przypadku tych list ACL źródła danych:
- Publiczne w domenie.
- Publiczne źródło danych.
- Większość dokumentów ma tę samą odziedziczoną listę ACL.
- Wspólne nazwy operatorów (np.
priorityiseverityużywające wartości od 0 do 3) obniżają poziom ufności. - Domyślnie interpretacja używa małych liter w przypadku wartości pól, chyba że używasz
exactMatchWithOperator. - Operator
sourcenie jest obsługiwany. - Połączenie operatora i terminów w tekście dowolnym (np. „p0 cases severity:s0”) nie jest interpretowane.
- Wyniki są zawsze mieszane z wynikami posortowanymi według trafności.