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 zapytań korzysta z operatorów zdefiniowanych w schemacie oraz ze zindeksowanych dokumentów, aby ustalić znaczenie zapytania użytkownika. Ta funkcja pozwala użytkownikom wyszukiwać przy użyciu minimalnej liczby słów kluczowych, a zarazem uzyskiwać dokładne wyniki.
Rzeczywiste wyniki wyświetlane użytkownikowi zależą od poziomu ufności interpretacji zapytania. Poziom ufności zależy od kilku czynników, m.in. od tego, gdzie ciągi zapytania pojawiają się w zindeksowanych dokumentach. Ciąg taki jak nazwisko aktora „Tomek Hanks” występujący konsekwentnie w polu schematu o nazwie actors
daje wyższy poziom ufności. Ten sam ciąg znaków („Tomek Hanks”) pojawia się w akapicie, a nie w polu schematu, może zmniejszyć poziom ufności. W przypadku wysokiego poziomu pewności użytkownikowi wyświetlane są tylko wyniki z interpretacji zapytań. W przypadku słabszego poziomu pewności wyniki z interpretacji zapytania zostają wymieszane z wynikami wyszukiwania normalnych słów kluczowych.
Przykład interpretacji zapytania
Załóżmy, że masz źródło danych, np. bazę danych, które zawiera informacje o filmach. Ilustracja 1 przedstawia przykładowe zapytanie i wynikową interpretację.
Po przeanalizowaniu tego przykładowego zapytania interpretacja robi to:
Analizuje schemat i określa, że obiekty najwyższego poziomu w źródle danych są sklasyfikowane jako
objecttype:movies
. Interpretacja zapytań wie, że „filmy” w zapytaniu są typem 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 konkretnym polu źródła danych „gatunek”, interpretacja zapytania będzie mieć pewność, że „action” jest wartością właściwości „genre” zdefiniowanej w schemacie. Jeśli ciąg znaków występuje głównie w kontekście akapitów treści, poziom ufności interpretacji zapytania spada.
Wynikowa interpretacja zapytania:
actor:“tom hanks” genre:action objecttype:movies
Interpretacja zapytań jest automatycznie włączona dla wszystkich klientów Cloud Search bez żadnych dodatkowych czynności. Aby jednak uzyskać optymalną interpretację zapytań, należy utworzyć strukturę schematu zgodnie z instrukcjami w tym dokumencie.
Utwórz strukturę schematu w celu ułatwienia interpretacji zapytań
Uporządkuj schemat tak, aby zapewnić sobie korzyści z interpretacji zapytań.
Włącz interpretowanie wyświetlanej nazwy
Interpretacja zapytań w Cloud Search wykorzystuje objectDefinitions
i propertyDefinitions
w schemacie, aby zinterpretować zapytanie użytkownika i dostosować wyniki. Aby jak najlepiej wykorzystać te elementy schematu, utwórz intuicyjne wyświetlane nazwy używające znaków displayLabel
jako nazw właściwości, objectDisplayLabel
jako nazw obiektów i operatorName
jako operatorów.
Poniższy schemat przedstawia intuicyjne wyświetlane nazwy 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 filmowego zawiera atrybut
objectDisplayLabel
„Film”.Parametr genre propertyDefinition zawiera właściwości
operatorName
„genre” (gatunek) i „Category” (Kategoria)displayLabel
.
Te wyświetlane nazwy umożliwiają Cloud Search interpretację zapytań w ten sposób:
- „filmy akcji”, „gatunkowe filmy akcji” lub „gatunek filmowy akcja” są interpretowane jako
genre:action object:movies
. - „filmy akcji lub thrillery” – są interpretowane jako
objecttype:movies genre:(action OR thriller)
. - „film akcji” lub „filmy akcji” jest interpretowany jako
genre:action objecttype:movies
. - „filmy z kategorii komedii” są interpretowane jako
genre:comedy objecttype:movies
.
Włącz interpretację dat, wartości liczbowych i sortowania
Dla wszystkich właściwości daty i liczbowych musisz zdefiniować lessThanOperatorName
i greaterThanOperatorName
(określone w sekcji IntegerOperatorOptions
). Te ustawienia umożliwiają automatyczną interpretację dat i wartości liczbowych. Dodatkowo, aby włączyć interpretacje sortowania, ustaw opcję isSortable
dla właściwości daty i wartości liczbowych. 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 ustawionoruntimelessthan
iruntimegreaterthan
. - Właściwość daty
releaseDate
odnosi się do daty premiery filmu w kinie. Dla tej usługi ustawiono zasadyreleasedbefore
ireleasedafter
.
Te ustawienia umożliwiają Cloud Search interpretowanie zapytań:
- Przy założeniu, że rok to 2019, „filmy opublikowane w tym roku” będą interpretowane jako
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
. - Zakładając, że tydzień to trzeci tydzień marca, hasło „filmy opublikowane w zeszłym tygodniu” będzie interpretowane jako
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- „filmy z czasem działania krótszym niż 90” są interpretowane jako
objjecttype: movies runtimelessthan:90
. - Przy założeniu, że jest to 2019 r., wyrażenie „filmy, które wyprodukowano w tym roku i o długości ponad 120 lat” jest interpretowane jako
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
. - Posortuj filmy według daty premiery, a powiązane wyniki zostaną posortowane według daty premiery z domyślnym sortowaniem w kolejności rosnącej.
Włącz interpretację zarezerwowanego operatora
Aby poprawić interpretację zapytań, możesz też używać zarezerwowanych wbudowanych operatorów type
, before
, after
i objecttype
. Podczas indeksowania dokumentu wykonaj te czynności:
Aby używać operatorów
before
iafter
, wypełnij poleupdateTime
w tabeliItemMetadata
. Te ustawienia umożliwiają Cloud Search interpretację zapytań w ten sposób:- Pozycja „movies z zeszłego tygodnia” zawiera listę wszystkich filmów, które zaktualizowano w indeksie w poprzednim tygodniu.
- sekcja „movies before styczeń 2019” zawiera listę wszystkich filmów, które zostały zindeksowane przed styczniem 2019 r.
Aby korzystać z automatycznego wykrywania typu, wypełnij pole
mimeType
wItemMetadata
. Zapytanie „filmy akcji” spowoduje wyświetlenie wszystkich dokumentów dotyczących filmów akcji z typem MIMEapplication/mp4
,application/mpeg4
,application/x-shockwave-flash
,video/
iapplication/vnd.google-apps.video
.
Ograniczenia interpretacji zapytań
Funkcja interpretacji zapytań ma następujące ograniczenia.
- Interpretacja zapytań działa tylko w przypadku tych list kontroli dostępu źródeł danych:
- Wszystkie dokumenty są publiczne w domenie (każdy w domenie ma do nich dostęp).
- Wszystkie dokumenty są publiczne źródła danych (każdy, kto 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) bez zdefiniowanych dodatkowych czytników.
- Jeśli kilka operatorów schematu ma tę samą wartość, interpretacja tej wartości w odniesieniu do intencji operatora w danym zapytaniu 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 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
. Wartości te są niejednoznaczne, a poziom ufności jest niższy. - Domyślnie interpretacja zapytania w Cloud Search zmniejsza wielkość liter w wartościach pól podczas interpretacji zapytania z wyjątkiem operatorów tekstowych zdefiniowanych w opcjach
exactMatchWithOperator
. - Operator
source
nie jest obsługiwany w zapytaniach. - Zapytania, które łączą hasła oparte na operatorach i bezpłatne hasła tekstowe, nie są interpretowane. Na przykład zapytanie „waga spraw o priorytecie p0:s0” nie będzie obsługiwane, ponieważ „przypadki priorytetowe p0” to bezpłatne hasło tekstowe, a „severity:s0” jest hasłem opartym na operatorze.
- Strategia interpretacji zapytań zawsze łączy zinterpretowane wyniki ze zwykłymi (niezinterpretowanymi, ocenionymi według trafności). Nie zastępuje ona wyników w całej stronie.