Uporządkuj schemat, aby optymalnie interpretować zapytania

Cloud Search interpretacja zapytań automatycznie przekształca operatory i filtry w zapytaniu użytkownika w uporządkowane zapytanie oparte na operatorach. Ta funkcja korzysta z operatorów zdefiniowanych w schemacie i indeksowanych dokumentach, aby określić intencję zapytania. Dzięki temu użytkownicy mogą wyszukiwać, używając minimalnej liczby słów kluczowych, i uzyskiwać dokładne wyniki.

Prezentacja wyników zależy od poziomu ufności. Poziom ufności wzrasta, gdy ciągi zapytania konsekwentnie pojawiają się w określonych polach schematu (np. „Tom Hanks” w polu actors). Poziom ufności maleje, gdy ciągi pojawiają się w ogólnym tekście. W przypadku wysokiego poziomu ufności wyświetlane są tylko zinterpretowane wyniki, a w przypadku niższego poziomu ufności są one mieszane ze standardowymi wynikami słów kluczowych.

Przykład interpretacji zapytania

Załóżmy, że mamy bazę danych zawierającą informacje o filmach. Na rysunku 1 przedstawiono przykładowe zapytanie i jego interpretację.

Omówienie interpretacji zapytań
Rysunek 1. Interpretacja zapytania

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 słowo „akcja”. Jeśli występuje ono głównie w polu genre, poziom ufności wzrasta, co oznacza, że jest to wartość właściwości tego pola.

Wynikowa interpretacja to: actor:"tom hanks" genre:action objecttype:movies

Interpretacja zapytań jest automatyczna dla wszystkich użytkowników, ale możesz ją zoptymalizować, tworząc schemat w sposób opisany w kolejnych sekcjach.

Tworzenie schematu na potrzeby interpretacji zapytań

Optymalizacja schematu zapewnia korzystanie z interpretacji zapytań.

Włączanie interpretacji wyświetlanych nazw

Interpretacja zapytań korzysta z objectDefinitions i propertyDefinitions. Twórz intuicyjne wyświetlane nazwy, używając displayLabel dla właściwości, objectDisplayLabel dla obiektów i operatorName dla 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 komedia” -> genre:comedy objecttype:movies

Włączanie interpretacji dat, liczb i sortowania

W przypadku wszystkich właściwości dat i liczb zdefiniuj lessThanOperatorName i greaterThanOperatorName w IntegerOperatorOptions. Aby włączyć sortowanie, ustaw 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 o czasie trwania krótszym niż 90 minut” -> objecttype:movies runtimelessthan:90

Włączanie interpretacji zastrzeżonych operatorów

Używaj wbudowanych operatorów, takich jak type, before, after i objecttype:

  1. Aby używać operatorów before i after, wypełnij pole updateTime w ItemMetadata.
  2. Aby włączyć automatyczne wykrywanie, wypełnij pole mimeType w ItemMetadata. Na przykład „filmy akcji” wyświetla dokumenty z typami MIME wideo.

Ograniczenia interpretacji zapytań

  • Działa tylko w przypadku tych list ACL źródła danych:
    • Publiczne w domenie.
    • Publiczne źródło danych.
    • Większość dokumentów ma tę samą odziedziczoną listę ACL.
  • Wspólne nazwy operatorów (np. priority i severity używające wartości od 0 do 3) obniżają poziom ufności.
  • Domyślnie interpretacja używa małych liter w przypadku wartości pól, chyba że używasz exactMatchWithOperator.
  • Operator source nie jest obsługiwany.
  • Połączenie operatora i terminów w tekście dowolnym (np. „p0 cases severity:s0”) nie jest interpretowane.
  • Wyniki są zawsze mieszane z wynikami posortowanymi według trafności.