Funkcja interpretacji zapytań w Cloud Search automatycznie interpretuje operatory i filtry w zapytaniu użytkownika i przekształca te elementy w uporządkowane zapytanie oparte na operatorach. Interpretacja zapytania wykorzystuje operatory zdefiniowane w schemacie wraz z zindeksowanymi dokumentami, aby wywnioskować, co oznacza zapytanie użytkownika. Ta funkcja umożliwia użytkownikowi wyszukiwanie przy użyciu minimalnej liczby słów kluczowych, a mimo to uzyskiwanie precyzyjnych wyników.
Rzeczywiste wyniki wyświetlane użytkownikowi zależą od pewności interpretacji zapytania. Wartość ta zależy od kilku czynników, m.in. od tego, gdzie w zindeksowanych dokumentach pojawiają się ciągi zapytania. Ciąg znaków, np. imię i nazwisko aktora „Tom Hanks”, pojawiający się konsekwentnie w polu schematu o nazwie actors, zwiększa ufność. Ten sam ciąg znaków („Tom Hanks”) występujący w akapitach, a nie w polu schematu, może skutkować niższym poziomem ufności. W przypadku wysokiej pewności użytkownikowi wyświetlane są tylko wyniki interpretacji zapytania. W przypadku mniejszej pewności wyniki interpretacji zapytania są łączone z normalnymi wynikami wyszukiwania słów kluczowych.
Przykładowa interpretacja zapytania
Załóżmy, że masz źródło danych, np. bazę danych, zawierające informacje o filmach. Na ilustracji 1 widać przykładowe zapytanie i jego interpretację.
W tym przykładzie interpretacja zapytania wykonuje te czynności:
Analizuje schemat i ustala, ż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 „akcja” jest wartością właściwości „gatunek” 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 maleje.
Interpretacja zapytania:
actor:“tom hanks” genre:action objecttype:movies
Interpretacja zapytań jest automatycznie włączana u wszystkich klientów Cloud Search bez konieczności wykonywania dodatkowych czynności. Aby jednak uzyskać optymalną interpretację zapytań, należy skonstruować schemat zgodnie z instrukcjami podanymi w tym dokumencie.
Strukturyzowanie schematu pod kątem interpretacji zapytań
Zadbaj o odpowiednią strukturę schematu, aby móc korzystać z interpretacji zapytań.
Włączanie interpretacji wyświetlanej nazwy
Interpretacja zapytań w Cloud Search wykorzystuje objectDefinitions i propertyDefinitions w schemacie, aby interpretować zapytania użytkowników i dostosowywać wyniki. Aby w pełni wykorzystać te elementy schematu, utwórz intuicyjne nazwy wyświetlane, używając displayLabel w przypadku nazw właściwości, objectDisplayLabel w przypadku nazw obiektów i operatorName w przypadku operatorów.
Poniższy schemat przedstawia intuicyjne nazwy wyświetlane obiektu filmu:
{
"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 zawiera element „Film”
objectDisplayLabel.Definicja właściwości gatunku ma
operatorName„gatunek” idisplayLabel„kategoria”.
Te wyświetlane nazwy umożliwiają Cloud Search interpretowanie zapytań w ten sposób:
- „filmy akcji”, „filmy akcji gatunku” lub „filmy akcji gatunku” są interpretowane jako
genre:action object:movies. - „filmy z gatunku akcji lub thriller” jest interpretowane jako
objecttype:movies genre:(action OR thriller). - „film akcji” lub „filmy akcji” jest interpretowane jako
genre:action objecttype:movies. - „comedy category movies” jest interpretowane jako
genre:comedy objecttype:movies.
Włączanie interpretacji dat, liczb i sortowania
W przypadku wszystkich właściwości daty i wartości liczbowych należy zdefiniować typy lessThanOperatorName i greaterThanOperatorName określone w sekcji IntegerOperatorOptions. Te ustawienia umożliwiają automatyczne interpretowanie dat i liczb. 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ść numeryczna
runtimeodnosi się do długości filmu. W tej usłudze ustawiono wartościruntimelessthaniruntimegreaterthan. - Właściwość daty
releaseDateodnosi się do daty premiery filmu w kinach. Właściwościreleasedbeforeireleasedaftersą ustawione dla tej usługi.
Te ustawienia umożliwiają Cloud Search interpretowanie zapytań w ten sposób:
- Zakładając, że jest rok 2019, fraza „filmy wydane w tym roku” jest interpretowana jako
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31. - Jeśli tydzień to trzeci tydzień marca, „filmy wydane w zeszłym tygodniu” są interpretowane jako
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16 - „filmy trwające mniej niż 90 minut” jest interpretowane jako
objjecttype: movies runtimelessthan:90. - Zakładając, że jest rok 2019, zapytanie „filmy wydane w tym roku i długość powyżej 120” jest interpretowane jako
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120. - „sortuj filmy według daty premiery” spowoduje filtrowanie według „objecttype: movies”, a wyniki będą sortowane według daty premiery w porządku rosnącym.
Włączanie interpretacji operatorów zarezerwowanych
Możesz też używać zarezerwowanych wbudowanych operatorów type, before, after i objecttype, aby ulepszyć interpretację zapytań. Podczas indeksowania dokumentu wykonaj te czynności:
Wypełnij pole
updateTimew sekcjiItemMetadata, aby używać operatorówbeforeiafter. Te ustawienia umożliwiają Cloud Search interpretowanie zapytań w ten sposób:- „filmy z zeszłego tygodnia” wyświetli wszystkie filmy, które zostały zaktualizowane w indeksie w poprzednim tygodniu.
- „filmy przed styczniem 2019” wyświetli wszystkie filmy, które zostały zindeksowane przed styczniem 2019 r.
Wypełnij pole
mimeTypewItemMetadata, aby używać automatycznego wykrywania typu. Zapytanie „filmy akcji” spowoduje wyświetlenie wszystkich dokumentów z filmami akcji o typie MIMEapplication/mp4,application/mpeg4,application/x-shockwave-flash,video/iapplication/vnd.google-apps.video.
Ograniczenia interpretacji zapytań
Funkcja interpretacji zapytań ma te ograniczenia:
- Interpretacja zapytania działa tylko w przypadku tych list kontroli dostępu do źródeł danych:
- Wszystkie dokumenty są publiczne w domenie (każdy użytkownik w domenie ma do nich dostęp).
- Wszystkie dokumenty są publiczne (każda osoba, która 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 ma zdefiniowanych dodatkowych czytelników.
- Jeśli wiele operatorów schematu ma tę samą wartość, interpretacja tej wartości jako intencji operatora w przypadku 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
priorityiseverityo tych samych nazwach operatorów zdefiniowanych 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 operatoraprioritylubseverity. Te wartości są niejednoznaczne, a poziom ufności jest niższy. - Domyślnie interpretacja zapytań w Cloud Search obniża wielkość liter w wartościach pól podczas interpretowania zapytania, z wyjątkiem operatorów tekstowych zdefiniowanych z opcjami
exactMatchWithOperator. - Operator
sourcenie jest obsługiwany w zapytaniach. - Zapytania, które łączą terminy oparte na operatorach i terminy w formie tekstu swobodnego, nie są interpretowane. Na przykład zapytanie „p0 priority cases severity:s0” nie będzie obsługiwane, ponieważ „p0 priority cases” to termin tekstowy, a „severity:s0” to termin oparty na operatorze.
- Strategia interpretacji zapytań zawsze łączy zinterpretowane wyniki ze zwykłymi wynikami (niezinterpretowanymi, uporządkowanymi według trafności). Nie zastępuje ona wszystkich wyników na stronie.