Funkcja interpretacji zapytań w Cloud Search automatycznie interpretuje operatory i filtry w zapytaniu użytkownika oraz przekształca te elementy w uporządkowane zapytanie oparte na operatorach. Interpretacja zapytania ustala znaczenie zapytania użytkownika za pomocą operatorów zdefiniowanych w schemacie wraz ze indeksowanymi dokumentami. Ta funkcja pozwala użytkownikom wyszukiwać z użyciem minimalnej liczby słów kluczowych, a jednocześnie uzyskuje precyzyjne wyniki.
Rzeczywiste wyniki wyświetlane użytkownikowi zależą od pewności interpretacji zapytania. Poziom ufności zależy od kilku czynników, m.in. od miejsca, w którym ciągi zapytań pojawiają się w zindeksowanych dokumentach. Ciąg znaków, np. imię i nazwisko aktora „Toma Hanksa”, występujący konsekwentnie w polu schematu o nazwie actors
zwiększa pewność siebie. Ten sam ciąg znaków („Tom Hanks”) w akapicie, a nie w polu schematu, może obniżyć poziom ufności. W przypadku wysokiego poziomu pewności użytkownik widzi tylko wyniki z interpretacji zapytania. W przypadku niższego poziomu pewności wyniki interpretacji zapytania są łączone ze zwykłymi wynikami wyszukiwania słów kluczowych.
Interpretacja przykładowego zapytania
Załóżmy, że masz źródło danych, np. bazę danych, z informacjami o filmach. Rysunek 1 przedstawia przykładowe zapytanie i wynikową interpretację.
W kontekście tego przykładowego zapytania interpretacja zapytania przebiega w następujący sposób:
Analizuje schemat i określa, że obiekty najwyższego poziomu w źródle danych są klasyfikowane jako
objecttype:movies
. Interpretacja zapytania wie teraz, że „filmy” w zapytaniu to typ obiektu.Skanuje dokumenty w źródle danych w połączeniu ze schematem, aby określić, gdzie występuje ciąg znaków „action”. Jeśli ciąg znaków występuje głównie w określonym polu źródła danych „gatunek”, interpretacja zapytania ma pewność, że „działanie” jest wartością właściwości „gatunek” określonej w schemacie. Jeśli ciąg występuje głównie w kontekście akapitów treści, poziom ufności interpretacji zapytania spada.
Wynikowa interpretacja zapytania wygląda tak:
actor:“tom hanks” genre:action objecttype:movies
Interpretacja zapytań jest automatycznie włączona dla wszystkich klientów Cloud Search bez konieczności wykonywania dodatkowych czynności. Aby jednak uzyskać optymalną interpretację zapytania, uporządkuj schemat zgodnie z instrukcjami w tym dokumencie.
Utwórz strukturę schematu, aby umożliwić interpretację zapytań
Musisz tak skonstruować schemat, aby czerpać korzyści z interpretacji zapytań.
Włącz interpretację wyświetlanych nazw
Interpretacja zapytań Cloud Search korzysta w schemacie z elementów objectDefinitions
i propertyDefinitions
, aby interpretować zapytanie użytkownika i dostosowywać wyniki. Aby jak najlepiej wykorzystać te elementy schematu, utwórz intuicyjne nazwy wyświetlane z użyciem displayLabel
dla nazw właściwości, objectDisplayLabel
dla nazw obiektów i operatorName
jako operatorów.
Ten schemat przedstawia intuicyjne nazwy wyświetlane obiektu filmowego:
{
"objectDefinitions": [
{
"name": "movie",
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
...
},
"propertyDefinitions": [
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "genre"
}
},
"displayOptions": {
"displayLabel": "Category"
}
},
...
]
}
]
}
W poprzednim przykładzie:
Definicja obiektu filmu ma wartość „Film”
objectDisplayLabel
.Właściwość genre genre zawiera atrybuty „genre” (
operatorName
) i „Category” (Kategoria)displayLabel
.
Dzięki tym wyświetlanym nazwom Cloud Search może interpretować te zapytania:
- „filmy akcji”, „filmy akcji z gatunku” lub „gatunek filmowy akcji” są interpretowane jako
genre:action object:movies
. - „filmy z gatunkowym akcją lub thrillerem” są interpretowane jako
objecttype:movies genre:(action OR thriller)
. - „film akcji” lub „filmy akcji” jest interpretowany jako
genre:action objecttype:movies
. - „Kategorie komediowe” są interpretowane jako
genre:comedy objecttype:movies
.
Włącz interpretację daty, liczb i sortowania
Dla wszystkich właściwości daty i liczb należy zdefiniować lessThanOperatorName
i greaterThanOperatorName
określone w IntegerOperatorOptions
. Te ustawienia umożliwiają automatyczne
interpretowanie daty i liczb. Aby włączyć interpretacje sortowania, ustaw też opcję isSortable
dla właściwości daty i liczb. Poniższy schemat pokazuje, jak włączyć te opcje.
{
"objectDefinitions": [
{
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
},
"propertyDefinitions": [
{
"name": "runtime",
"isReturnable": true,
"isSortable": true,
"integerPropertyOptions": {
"orderedRanking": "DESCENDING",
"minimumValue": {
"value": 10
},
"maximumValue": {
"value": 500
},
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
},
"displayOptions": {
"displayLabel": "Length"
}
},
{
"name": "releasedate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}
]
}
W poprzednim przykładzie:
- Właściwość liczbowa
runtime
odnosi się do długości filmu. Dla tej usługi ustawiono wartościruntimelessthan
iruntimegreaterthan
. - Właściwość daty
releaseDate
określa premierę filmu w kinie. Dla tej usługi ustawiono wartościreleasedbefore
ireleasedafter
.
Dzięki nim Cloud Search może interpretować te zapytania:
- Zakładając, że rok to 2019, „filmy wydane w tym roku” są interpretowane jako
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
. - Zakładając, że tydzień to 3 tydzień marca, „filmy wydane w zeszłym tygodniu” są interpretowane jako
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- „filmy o czasie działania krótszym niż 90” są interpretowane jako
objjecttype: movies runtimelessthan:90
. - Zakładając, że rok to 2019 r., „filmy opublikowane w tym roku, które trwają ponad 120 lat” są interpretowane jako
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - Opcja „Sortuj filmy według daty premiery” filtruje według „objecttype: filmy”, a wyświetlane wyniki będą sortowane według daty premiery, a domyślna kolejność sortowania będzie rosnąć.
Włącz interpretację operatora zarezerwowanego
Aby usprawnić interpretację zapytań, możesz też używać zarezerwowanych wbudowanych operatorów type
, before
, after
i objecttype
. Podczas indeksowania dokumentu
wykonaj te czynności:
Wypełnij pole
updateTime
wItemMetadata
, aby użyć operatorówbefore
iafter
. Dzięki tym ustawieniom Cloud Search może interpretować te zapytania:- Lista „filmy z zeszłego tygodnia” wyświetla wszystkie filmy zaktualizowane w indeksie w poprzednim tygodniu.
- „Filmy sprzed stycznia 2019 r.” to lista wszystkich filmów zindeksowanych przed styczniem 2019 r.
Wypełnij pole
mimeType
wItemMetadata
, aby korzystać z automatycznego wykrywania typu. Zapytanie „filmy akcji” wyświetli listę wszystkich dokumentów z filmami akcji z typem MIMEapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
iapplication/vnd.google-apps.video
.
Ograniczenia interpretacji zapytań
Funkcja interpretacji zapytań podlega poniższym ograniczeniom.
- Interpretacja zapytań działa tylko w przypadku tych list kontroli dostępu (ACL) źródeł danych:
- Wszystkie dokumenty są w domenie publiczne (każdy w domenie ma do nich dostęp).
- Wszystkie dokumenty są publiczne źródła danych (każdy użytkownik, który ma dostęp do listy kontroli dostępu źródła danych).
- Większość dokumentów w źródle danych ma tę samą listę kontroli dostępu (wszystkie dokumenty dziedziczą listę kontroli dostępu z tego samego elementu kontenera) i nie mają zdefiniowanych dodatkowych czytników.
- Jeśli wiele operatorów schematu ma tę samą wartość, interpretacja tej wartości w intencji operatora dla zapytania zależy od ogólnego współczynnika ufności zwróconego przez system interpretacji zapytań. Załóżmy na przykład, że masz właściwości
priority
iseverity
z tymi samymi nazwami operatorów, które są zdefiniowane w schemacie. Załóżmy, że oba operatory mogą mieć wartości 0, 1, 2 lub 3. W tym przykładzie „0” w zapytaniu może odnosić się do wartości operatorapriority
lubseverity
. Te wartości są niejednoznaczne, a poziom ufności jest niższy. - Domyślnie interpretacja zapytań Cloud Search zmniejsza wielkość liter podczas interpretacji zapytania dotyczącego wartości pól, z wyjątkiem tych operatorów tekstowych zdefiniowanych za pomocą opcji
exactMatchWithOperator
. - Operator
source
nie jest obsługiwany w zapytaniach. - Zapytania, które łączą hasła oparte na operatorach i swobodne hasła tekstowe, nie są interpretowane. Na przykład zapytanie „waga przypadków p0 o priorytecie p0:s0” nie będzie obsługiwane, ponieważ „przypadki o priorytecie p0” jest terminem dowolnym, natomiast „severity:s0” to termin oparty na operatorach.
- Strategia interpretacji zapytań zawsze łączy zinterpretowane wyniki ze zwykłymi (niezinterpretowanymi, klasyfikowanymi według trafności) wynikami. Nie zastępuje ona całej strony wyników.