Interpretacja zapytań w Cloud Search automatycznie przekształca operatory i filtry w zapytaniu użytkownika w zapytanie strukturalne oparte na operatorach. Funkcja korzysta z operatorów zdefiniowanych w schemacie i zindeksowanych dokumentów, aby określić intencję zapytania. Umożliwia to użytkownikom wyszukiwanie przy użyciu minimalnej liczby słów kluczowych i uzyskiwanie precyzyjnych wyników.
Prezentacja wyników zależy od pewności. Poziom ufności wzrasta, gdy ciągi zapytań stale pojawiają się w określonych polach schematu (np. „Tom Hanks”
w polu actors). Poziom ufności spada, gdy ciągi znaków pojawiają się w ogólnym tekście. Wysoki poziom ufności wyświetla tylko zinterpretowane wyniki, a niższy poziom ufności łączy je ze standardowymi wynikami słów kluczowych.
Przykładowa interpretacja zapytania
Rozważmy bazę danych zawierającą informacje o filmach. Ilustracja 1 przedstawia 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 „działanie”. Jeśli występuje głównie w polu
genre, zwiększa się pewność, że jest to wartość właściwości tego pola.
Wynik interpretacji to:actor:"tom hanks" genre:action objecttype:movies
Interpretacja zapytań jest automatyczna w przypadku wszystkich użytkowników, ale możesz ją zoptymalizować, strukturyzując schemat w sposób opisany w kolejnych sekcjach.
Strukturyzowanie schematu na potrzeby interpretacji zapytań
Optymalizacja schematu zapewnia korzystanie z interpretacji zapytań.
Włączanie interpretacji wyświetlanej nazwy
Interpretacja zapytań korzysta z parametrów objectDefinitions i propertyDefinitions, aby interpretować zapytania. Twórz intuicyjne nazwy wyświetlane za pomocą znaków
displayLabel
w przypadku właściwości,
objectDisplayLabel
w przypadku obiektów i operatorName w przypadku 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 komedie” ->
genre:comedy objecttype:movies
Włączanie interpretacji dat, liczb i sortowania
Zdefiniuj typy lessThanOperatorName i greaterThanOperatorName w obrębie elementu IntegerOperatorOptions dla wszystkich właściwości daty i wartości liczbowych. Aby włączyć sortowanie, ustaw wartość 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 trwające krócej niż 90 minut” ->
objecttype:movies runtimelessthan:90
Włączanie interpretacji operatorów zarezerwowanych
Używaj wbudowanych operatorów, takich jak type, before, after i objecttype:
- Wypełnij pole
updateTimewItemMetadata, aby używać właściwościbeforeiafter. - Wypełnij pole
mimeTypewItemMetadata, aby włączyć automatyczne wykrywanie. Na przykład „filmy akcji” zawiera listę dokumentów z typami MIME wideo.
Ograniczenia interpretacji zapytań
- Działa tylko w przypadku tych list ACL źródeł danych:
- Domena publiczna.
- Źródło danych jest publiczne.
- Większość dokumentów ma tę samą odziedziczoną listę kontroli dostępu.
- Nazwy operatorów współdzielonych (np.
priorityiseverity(0–3) z mniejszą pewnością. - Domyślnie interpretacja używa małych liter w przypadku wartości pól, chyba że użyjesz znaku
exactMatchWithOperator. - Operator
sourcenie jest obsługiwany. - Połączenie operatora i terminów w formie tekstu dowolnego (np. „p0 cases severity:s0”) nie są interpretowane.
- Wyniki są zawsze łączone z wynikami uporządkowanymi według trafności.