Tworzenie indeksu w usłudze Azure AI Search

W usłudze Azure AI Search żądania zapytań są kierowane do tekstu z możliwością wyszukiwania w indeksie wyszukiwania.

W tym artykule przedstawiono kroki definiowania i publikowania indeksu wyszukiwania. Tworzenie indeksu ustanawia fizyczne struktury danych w usłudze wyszukiwania. Po utworzeniu definicji indeksu ładowanie indeksu następuje jako osobne zadanie.

Wymagania wstępne

  • Uprawnienia do zapisu. Uprawnienia można udzielić za pośrednictwem klucza interfejsu API administratora w żądaniu. Alternatywnie, jeśli używasz kontroli dostępu opartej na rolach, wyślij żądanie jako członek roli Współautor wyszukiwania.

  • Znajomość danych, które chcesz indeksować. Tworzenie indeksu jest ćwiczeniem definicji schematu, dlatego należy mieć jasny pomysł, które pola źródłowe mają być wyszukiwalne, możliwe do pobrania, filtrowania, tworzenia aspektów i sortowania (zobacz listę kontrolną schematu, aby uzyskać wskazówki).

    Musisz również mieć unikatowe pole w danych źródłowych, które może być używane jako klucz dokumentu (lub identyfikator) w indeksie.

  • Stabilna lokalizacja indeksu. Przenoszenie istniejącego indeksu do innej usługi wyszukiwania nie jest obsługiwane w trybie out-of-box. Ponownie zapoznaj się z wymaganiami aplikacji i upewnij się, że istniejąca usługa wyszukiwania, jej pojemność i lokalizacja są wystarczające dla Twoich potrzeb.

  • Na koniec wszystkie warstwy usług mają limity indeksów dla liczby obiektów, które można utworzyć. Jeśli na przykład eksperymentujesz z warstwą Bezpłatna, w danym momencie możesz mieć tylko trzy indeksy. W samym indeksie istnieją limity liczby złożonych pól i kolekcji.

Klucze dokumentów

Indeks wyszukiwania ma jedno wymagane pole: klucz dokumentu. Klucz dokumentu jest unikatowym identyfikatorem dokumentu wyszukiwania. W usłudze Azure AI Search musi być ciągiem i musi pochodzić z unikatowych wartości w źródle danych, które udostępnia zawartość do indeksowania. Usługa wyszukiwania nie generuje wartości kluczy, ale w niektórych scenariuszach (takich jak indeksator tabel platformy Azure) syntetyzuje istniejące wartości w celu utworzenia unikatowego klucza dla indeksowanych dokumentów.

Podczas indeksowania przyrostowego, gdzie indeksowana jest nowa i zaktualizowana zawartość, dodawane są dokumenty przychodzące z nowymi kluczami, podczas gdy dokumenty przychodzące z istniejącymi kluczami są scalane lub zastępowane, w zależności od tego, czy pola indeksu mają wartość null, czy wypełniane.

Lista kontrolna schematu

Ta lista kontrolna ułatwia podejmowanie decyzji projektowych dotyczących indeksu wyszukiwania.

  1. Przejrzyj konwencje nazewnictwa, aby nazwy indeksów i pól były zgodne z regułami nazewnictwa.

  2. Przejrzyj obsługiwane typy danych. Typ danych wpływa na sposób użycia pola. Na przykład zawartość liczbowa jest filtrowalna, ale nie można przeszukiwać pełnotekstowej. Najczęściej używanym typem danych jest Edm.String tekst z możliwością wyszukiwania, który jest tokenizowany i odpytywane przy użyciu wyszukiwarki pełnotekstowej.

  3. Identyfikowanie klucza dokumentu. Klucz dokumentu jest wymaganiem indeksu. Jest to jedno pole ciągu, które jest wypełniane z pola danych źródłowych, które zawiera unikatowe wartości. Jeśli na przykład indeksujesz z usługi Blob Storage, ścieżka magazynu metadanych jest często używana jako klucz dokumentu, ponieważ jednoznacznie identyfikuje każdy obiekt blob w kontenerze.

  4. Zidentyfikuj pola w źródle danych, które współtworzyją zawartość z możliwością wyszukiwania w indeksie. Zawartość z możliwością wyszukiwania zawiera krótkie lub długie ciągi, których dotyczy zapytanie przy użyciu wyszukiwarki pełnotekstowej. Jeśli zawartość jest szczegółowa (małe frazy lub większe fragmenty), poeksperymentuj z różnymi analizatorami, aby zobaczyć, jak tekst jest tokenizowany.

    Przypisania atrybutów pól określają zarówno zachowania wyszukiwania, jak i fizyczną reprezentację indeksu w usłudze wyszukiwania. Określanie sposobu określania pól jest procesem iteracyjnym dla wielu klientów. Aby przyspieszyć iterację, zacznij od przykładowych danych, aby można było łatwo upuszczać i ponownie kompilować.

  5. Określ, które pola źródłowe mogą być używane jako filtry. Zawartość liczbowa i krótkie pola tekstowe, szczególnie te z powtarzającymi się wartościami, są dobrymi wyborami. Podczas pracy z filtrami pamiętaj:

    • Pola z możliwością filtrowania mogą być opcjonalnie używane w nawigacji aspektowej.

    • Pola z możliwością filtrowania są zwracane w dowolnej kolejności, dlatego warto rozważyć ich sortowanie.

  6. Określ, czy używać analizatora domyślnego ("analyzer": null) czy innego analizatora. Analizatory są używane do tokenizowania pól tekstowych podczas indeksowania i wykonywania zapytań.

    W przypadku ciągów wielojęzycznych należy rozważyć analizator języka.

    W przypadku ciągów łącznikowych lub znaków specjalnych należy wziąć pod uwagę wyspecjalizowane analizatory. Jednym z przykładów jest słowo kluczowe , które traktuje całą zawartość pola jako pojedynczy token. To zachowanie jest przydatne w przypadku danych, takich jak kody pocztowe, identyfikatory i niektóre nazwy produktów. Aby uzyskać więcej informacji, zobacz Częściowe wyszukiwanie terminów i wzorce ze znakami specjalnymi.

Uwaga

Wyszukiwanie pełnotekstowe jest przeprowadzane na terminach, które są tokenizowane podczas indeksowania. Jeśli zapytania nie zwracają oczekiwanych wyników, przetestuj tokenizację, aby sprawdzić, czy ciąg rzeczywiście istnieje. Możesz wypróbować różne analizatory w ciągach, aby zobaczyć, jak tokeny są tworzone dla różnych analizatorów.

Tworzenie indeksu

Gdy wszystko będzie gotowe do utworzenia indeksu, użyj klienta wyszukiwania, który może wysłać żądanie. Do wczesnego programowania i testowania koncepcji można użyć witryny Azure Portal lub interfejsów API REST.

Podczas opracowywania zaplanuj częste ponowne kompilowanie. Ponieważ struktury fizyczne są tworzone w usłudze, usuwanie i ponowne tworzenie indeksów jest niezbędne w przypadku wielu modyfikacji. Możesz rozważyć pracę z podzbiorem danych, aby przyspieszyć ponowne kompilowanie.

Projektowanie indeksów za pośrednictwem portalu wymusza wymagania i reguły schematu dla określonych typów danych, takie jak brak możliwości wyszukiwania pełnotekstowego w polach liczbowych.

  1. Zaloguj się w witrynie Azure Portal.

  2. Na stronie Przegląd usługi wyszukiwania wybierz jedną z opcji tworzenia indeksu wyszukiwania:

    Kreator to pełny przepływ pracy, który tworzy indeksator, źródło danych i gotowy indeks. Ładuje również dane. Jeśli jest to więcej niż to, co chcesz, użyj zamiast tego polecenia Dodaj indeks .

Na poniższym zrzucie ekranu wyróżniono pozycję Dodaj indeks i Importuj dane na pasku poleceń. Po utworzeniu indeksu można go znaleźć ponownie na karcie Indeksy .

Dodaj polecenie indeksu

Napiwek

Po utworzeniu indeksu w portalu możesz skopiować reprezentację JSON i dodać ją do kodu aplikacji.

Ustawianie corsOptions dla zapytań między źródłami

Schematy indeksów zawierają sekcję ustawienia corsOptions. Domyślnie język JavaScript po stronie klienta nie może wywoływać żadnych interfejsów API, ponieważ przeglądarki uniemożliwiają wszystkie żądania między źródłami. Aby zezwolić na wykonywanie zapytań między źródłami do indeksu, włącz mechanizm CORS (współużytkowanie zasobów między źródłami), ustawiając atrybut corsOptions . Ze względów bezpieczeństwa tylko interfejsy API zapytań obsługują mechanizm CORS.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

Dla mechanizmu CORS można ustawić następujące właściwości:

  • allowedOrigins (wymagane): jest to lista źródeł, które mogą uzyskiwać dostęp do indeksu. Kod JavaScript obsługiwany z tych źródeł może wykonywać zapytania względem indeksu (zakładając, że obiekt wywołujący udostępnia prawidłowy klucz lub ma uprawnienia). Każde źródło jest zazwyczaj postacią protocol://<fully-qualified-domain-name>:<port> , chociaż <port> często jest pomijane. Aby uzyskać więcej informacji, zobacz Współużytkowanie zasobów między źródłami (Wikipedia).

    Jeśli chcesz zezwolić na dostęp do wszystkich źródeł, dołącz * go jako pojedynczy element w tablicy allowedOrigins . Nie jest to zalecana praktyka w przypadku usług wyszukiwania w środowisku produkcyjnym, ale często jest przydatna do programowania i debugowania.

  • maxAgeInSeconds (opcjonalnie): przeglądarki używają tej wartości do określenia czasu trwania (w sekundach) w celu buforowania odpowiedzi wstępnych CORS. Musi to być nieujemna liczba całkowita. Dłuższy okres pamięci podręcznej zapewnia lepszą wydajność, ale wydłuża czas, przez jaki zasady CORS muszą obowiązywać. Jeśli ta wartość nie jest ustawiona, zostanie użyty domyślny czas trwania pięciu minut.

Dozwolone aktualizacje istniejących indeksów

Tworzenie indeksu tworzy fizyczne struktury danych (pliki i odwrócone indeksy) w usłudze wyszukiwania. Po utworzeniu indeksu możliwość wprowadzania zmian przy użyciu indeksu aktualizacji zależy od tego, czy modyfikacje unieważniają te struktury fizyczne. Nie można zmienić większości atrybutów pól po utworzeniu pola w indeksie.

Alternatywnie możesz utworzyć alias indeksu, który służy jako stabilne odwołanie w kodzie aplikacji. Zamiast aktualizować kod, możesz zaktualizować alias indeksu, aby wskazywał nowsze wersje indeksu.

Aby zminimalizować współczynnik zmian w procesie projektowania, w poniższej tabeli opisano, które elementy są stałe i elastyczne w schemacie. Zmiana stałego elementu wymaga ponownego kompilowania indeksu, natomiast elastyczne elementy można zmieniać w dowolnym momencie bez wpływu na implementację fizyczną.

Element Czy można je zaktualizować?
Nazwisko Nie.
Klucz Nie.
Nazwy i typy pól Nie.
Atrybuty pól (z możliwością wyszukiwania, filtrowanie, tworzenie aspektów, sortowanie) Nie.
Atrybut pola (możliwy do pobrania) Tak
Analizator Analizatory niestandardowe można dodawać i modyfikować w indeksie. W odniesieniu do przypisań analizatora w polach ciągów można modyfikować searchAnalyzertylko . Wszystkie inne przypisania i modyfikacje wymagają ponownej kompilacji.
Profile oceniania Tak
Funkcje sugestii Nie.
współużytkowanie zasobów między źródłami (CORS) Tak
Szyfrowanie Tak

Następne kroki

Skorzystaj z poniższych linków, aby zapoznać się z ładowaniem indeksu z danymi lub rozszerzaniem indeksu za pomocą mapy synonimów.