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 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 wysokiego poziomu ufności użytkownikowi wyświetlane są tylko wyniki interpretacji zapytania. W przypadku mniejszej pewności wyniki interpretacji zapytania są łączone ze zwykłymi 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:
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łączona 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 gatunku akcji” 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. - „filmy z kategorii komedie” 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, zapytanie „filmy wydane w tym roku” jest interpretowane 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, 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.
- „movies before jan 2019” (filmy przed styczniem 2019 r.) 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 zapytań 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 na potrzeby intencji operatora w zapytaniu zależy od ogólnego współczynnika ufności zwróconego przez system interpretacji zapytań. Załóżmy na przykład, że w schemacie masz zdefiniowane właściwości
priorityiseverityo tych samych nazwach operatorów. 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 podczas interpretowania zapytania zmienia wielkość liter w wartościach pól na małe, 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.