Przeszukiwanie indeksu

Ukończone

Indeks jest wynikiem przeszukiwania procesu indeksowania. Składa się z kolekcji dokumentów JSON z polami zawierającymi wartości wyodrębnione podczas indeksowania. Aplikacje klienckie mogą wysyłać zapytania do indeksu w celu pobrania, filtrowania i sortowania informacji.

Diagram przedstawiający klienta wyszukującego indeks usługi Azure AI Search.

Każde pole indeksu można skonfigurować przy użyciu następujących atrybutów:

  • key: Pola definiujące unikatowy klucz dla rekordów indeksu.
  • wyszukiwanie: pola, do których można wykonywać zapytania przy użyciu wyszukiwania pełnotekstowego.
  • filtrowalne: pola, które można uwzględnić w wyrażeniach filtru, aby zwracać tylko dokumenty zgodne z określonymi ograniczeniami.
  • sortowalne: pola, których można użyć do zamawiania wyników.
  • facetable: pola, które mogą służyć do określania wartości aspektów (elementy interfejsu użytkownika używane do filtrowania wyników na podstawie listy znanych wartości pól).
  • pobieranie: pola, które można uwzględnić w wynikach wyszukiwania (domyślnie wszystkie pola są pobierane, chyba że ten atrybut zostanie jawnie usunięty).

Chociaż można pobrać wpisy indeksu na podstawie prostego dopasowania wartości pola, większość rozwiązań wyszukiwania używa semantyki wyszukiwania pełnotekstowego do wykonywania zapytań względem indeksu.

Wyszukiwanie pełnotekstowe opisuje rozwiązania wyszukiwania, które analizują zawartość dokumentu na podstawie tekstu w celu znalezienia terminów zapytania. Zapytania wyszukiwania pełnotekstowego w usłudze Azure AI Search są oparte na składni zapytań Lucene , która udostępnia bogaty zestaw operacji zapytań na potrzeby wyszukiwania, filtrowania i sortowania danych w indeksach. Usługa Azure AI Search obsługuje dwa warianty składni Lucene:

  • Prosty — intuicyjna składnia, która ułatwia wykonywanie podstawowych wyszukiwań odpowiadających terminom zapytania literału przesłanym przez użytkownika.
  • Full — rozszerzona składnia, która obsługuje złożone filtrowanie, wyrażenia regularne i inne bardziej zaawansowane zapytania.

Aplikacje klienckie przesyłają zapytania do usługi Azure AI Search, określając wyrażenie wyszukiwania wraz z innymi parametrami określającymi sposób oceniania wyrażenia i zwracanych wyników. Oto niektóre typowe parametry przesłane za pomocą zapytania:

  • search — wyrażenie wyszukiwania zawierające terminy do znalezienia.
  • queryType — składnia Lucene do oceny (prosta lub pełna).
  • searchFields — pola indeksu do wyszukania.
  • select — pola, które mają zostać uwzględnione w wynikach.
  • searchMode — kryteria dołączania wyników na podstawie wielu terminów wyszukiwania. Załóżmy na przykład, że wyszukujesz indeks dokumentów związanych z podróżami dla wygodnego hotelu. Wartość searchMode any zwraca dokumenty, które zawierają "wygodne", "hotel" lub oba; podczas gdy wartość searchMode all ogranicza wyniki do dokumentów, które zawierają zarówno "wygodne" i "hotel".

Przetwarzanie zapytań składa się z czterech etapów:

  1. Analizowanie zapytań. Wyrażenie wyszukiwania jest oceniane i rekonstruowane jako drzewo odpowiednich podzapytania. Podzapytania mogą obejmować zapytania terminów (znajdowanie określonych pojedynczych wyrazów w wyrażeniu wyszukiwania — na przykład hotel), zapytania fraz (znajdowanie fraz wieloterminowych określonych w cudzysłowie w wyrażeniu wyszukiwania — na przykład "bezpłatny parking" ) i zapytania prefiksu (znajdowanie terminów z określonym prefiksem — na przykład air*, które pasują do dróg oddechowych, klimatyzacji i lotniska).
  2. Analiza leksykalna — terminy zapytania są analizowane i uściśline na podstawie reguł językowych. Na przykład tekst jest konwertowany na małe litery i nieokreślone stopwords (takie jak "the", "a", "is" itd.) są usuwane. Następnie wyrazy są konwertowane na ich formę główną (na przykład "wygodne" mogą zostać uproszczone do "komfortu"), a złożone wyrazy są podzielone na ich terminy składowe.
  3. Pobieranie dokumentu — terminy zapytania są dopasowywane do indeksowanych terminów, a zestaw pasujących dokumentów jest identyfikowany.
  4. Ocenianie — ocena istotności jest przypisywana do każdego wyniku na podstawie obliczania częstotliwości/odwrotnej częstotliwości dokumentu (TF/IDF).

Wskazówka

Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących indeksu oraz szczegółowych informacji na temat prostej i pełnej składni, zobacz Typy zapytań i kompozycja w usłudze Azure AI Search w dokumentacji usługi Azure AI Search .

Często w rozwiązaniu wyszukiwania użytkownicy chcą uściślić wyniki zapytań, filtrując i sortując według wartości pól. Usługa Azure AI Search obsługuje obie te możliwości za pośrednictwem interfejsu API zapytań wyszukiwania.

Filtrowanie wyników

Filtry można stosować do zapytań na dwa sposoby:

  • Uwzględniając kryteria filtrowania w prostym wyrażeniu wyszukiwania.
  • Dostarczając wyrażenie filtru OData jako parametr $filter z pełnym wyrażeniem wyszukiwania składni.

Filtr można zastosować do dowolnego pola z możliwością filtrowania w indeksie.

Załóżmy na przykład, że chcesz znaleźć dokumenty zawierające tekst w Londynie, które mają wartość pola autora recenzenta.

Ten wynik można osiągnąć, przesyłając następujące prostewyrażenie wyszukiwania :

search=London+author='Reviewer'
queryType=Simple

Alternatywnie możesz użyć filtru OData w parametrze $filter z pełnym wyrażeniem wyszukiwania Lucene w następujący sposób:

search=London
$filter=author eq 'Reviewer'
queryType=Full

Uwaga / Notatka

Wyrażenia $filter OData są uwzględniane w wielkości liter!

Filtrowanie przy użyciu aspektów

Aspekty to przydatny sposób prezentowania użytkownikom kryteriów filtrowania na podstawie wartości pól w zestawie wyników. Działają najlepiej, gdy pole ma niewielką liczbę dyskretnych wartości, które mogą być wyświetlane jako linki lub opcje w interfejsie użytkownika.

Aby używać aspektów, należy określić pola aspektowe , dla których chcesz pobrać możliwe wartości w początkowym zapytaniu. Na przykład możesz użyć następujących parametrów, aby zwrócić wszystkie możliwe wartości dla pola autora :

search=*
facet=author

Wyniki tego zapytania obejmują kolekcję dyskretnych wartości aspektów, które można wyświetlić w interfejsie użytkownika do wybrania. Następnie w kolejnym zapytaniu możesz użyć wybranej wartości aspektu do filtrowania wyników:

search=*
$filter=author eq 'selected-facet-value-here'

Sortowanie wyników

Domyślnie wyniki są sortowane na podstawie wyniku trafności przypisanego przez proces zapytania, z najwyższymi wynikami na liście pierwszych. Można jednak zastąpić tę kolejność sortowania, dołączając parametr OData orderby określający co najmniej jedno pole sortowalne i kolejność sortowania (asc lub desc).

Aby na przykład posortować wyniki tak, aby ostatnio zmodyfikowane dokumenty były wyświetlane jako pierwsze, można użyć następujących wartości parametrów:

search=*
$orderby=last_modified desc

Wskazówka

Aby uzyskać więcej informacji na temat używania filtrów, zobacz Filtry w usłudze Azure AI Search w dokumentacji Azure AI Search.