Uporządkuj schemat, aby optymalnie interpretować zapytania

Interpretacja zapytań w Cloud Search automatycznie przekształca operatory i filtry w zapytaniu użytkownika w zapytanie strukturalne oparte na operatorach. Funkcja korzysta z operatorów zdefiniowanych w schemacie i zindeksowanych dokumentów, aby określić intencję zapytania. Umożliwia to użytkownikom wyszukiwanie przy użyciu minimalnej liczby słów kluczowych i uzyskiwanie precyzyjnych wyników.

Prezentacja wyników zależy od pewności. Poziom ufności wzrasta, gdy ciągi zapytań stale pojawiają się w określonych polach schematu (np. „Tom Hanks” w polu actors). Poziom ufności spada, gdy ciągi znaków pojawiają się w ogólnym tekście. Wysoki poziom ufności wyświetla tylko zinterpretowane wyniki, a niższy poziom ufności łączy je ze standardowymi wynikami słów kluczowych.

Przykładowa interpretacja zapytania

Rozważmy bazę danych zawierającą informacje o filmach. Ilustracja 1 przedstawia 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 „działanie”. Jeśli występuje głównie w polu genre, zwiększa się pewność, że jest to wartość właściwości tego pola.

Wynik interpretacji to:actor:"tom hanks" genre:action objecttype:movies

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

Strukturyzowanie schematu na potrzeby interpretacji zapytań

Optymalizacja schematu zapewnia korzystanie z interpretacji zapytań.

Włączanie interpretacji wyświetlanej nazwy

Interpretacja zapytań korzysta z parametrów objectDefinitionspropertyDefinitions, aby interpretować zapytania. Twórz intuicyjne nazwy wyświetlane za pomocą znaków displayLabel w przypadku właściwości, objectDisplayLabel w przypadku obiektów i operatorName w przypadku 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 komedie” -> genre:comedy objecttype:movies

Włączanie interpretacji dat, liczb i sortowania

Zdefiniuj typy lessThanOperatorNamegreaterThanOperatorName w obrębie elementu IntegerOperatorOptions dla wszystkich właściwości daty i wartości liczbowych. Aby włączyć sortowanie, ustaw wartość 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 trwające krócej niż 90 minut” -> objecttype:movies runtimelessthan:90

Włączanie interpretacji operatorów zarezerwowanych

Używaj wbudowanych operatorów, takich jak type, before, afterobjecttype:

  1. Wypełnij pole updateTimeItemMetadata, aby używać właściwości beforeafter.
  2. Wypełnij pole mimeTypeItemMetadata, aby włączyć automatyczne wykrywanie. Na przykład „filmy akcji” zawiera listę dokumentów z typami MIME wideo.

Ograniczenia interpretacji zapytań

  • Działa tylko w przypadku tych list ACL źródeł danych:
    • Domena publiczna.
    • Źródło danych jest publiczne.
    • Większość dokumentów ma tę samą odziedziczoną listę kontroli dostępu.
  • Nazwy operatorów współdzielonych (np. priorityseverity (0–3) z mniejszą pewnością.
  • Domyślnie interpretacja używa małych liter w przypadku wartości pól, chyba że użyjesz znaku exactMatchWithOperator.
  • Operator source nie jest obsługiwany.
  • Połączenie operatora i terminów w formie tekstu dowolnego (np. „p0 cases severity:s0”) nie są interpretowane.
  • Wyniki są zawsze łączone z wynikami uporządkowanymi według trafności.