W poprzedniej części artykułu opisałem przykładowy scenariusz: chcieliśmy stworzyć przeglądarkę, która będzie umożliwiała podpowiadanie, wyszukiwanie po kilku polach, filtrowanie, wypisywanie wyników nawet, gdy użytkownik popełni dany błąd. Mogłaby też przeszukiwać pliki tekstowe i zdjęcia. Pisząc to samodzielnie zajęłoby to nam bardzo dużo czasu, dlatego skorzystaliśmy z Azure i usługi Search. W drugiej części artykułu omówimy scenariusz, w którym tworzymy wyszukiwarkę dla strony internetowej z wiadomościami, w której bazie są tytuły artykułów, oraz treści tych artykułów trzymane są na Blobie. 


Kacper Świsłocki. .NET Developer w białostockiej firmie Elastic Cloud Solutions. Młody programista, początkujący prelegent. Występował m.in. podczas wydarzenia Śląska Grupa Microsoft Meetup, gdzie opowiadał o tym, jak stworzyć zaawansowaną wyszukiwarkę za pomocą Azure Search.


Tworzymy projekt w .Necie – aplikację konsolową, której zadaniem będzie konfiguracja naszej usługi. Aby móc odwoływać się do naszej usługi potrzebujemy jej nazwy, oraz klucza administratora. Musimy również zainstalować SDK – Microsoft.Azure.Search do naszego projektu. (Poniżej znajdują się tylko kody najważniejszych funkcji. Pełny kod będzie znajdować się na repozytorium: https://github.com/swislockikacper/AzureSearchConfiguration).

Tworzymy dwa źródła danych. Jedno do informacji znajdujących się w bazie, drugie do plików znajdujących się na blobie.

Tworzymy jeden indeks, który będzie zawierał dane zarówno z bazy danych, jak i z Bloba. Definiujemy w nawiasach, jakiego typu są to pola oraz co możemy z nimi zrobić, tak jak było to przy tworzeniu indeksu na portalu.

Będą to wszystkie dane z tabeli bazy danych oraz pole content (zawartość pliku tekstowego) z Bloba. Ponadto należy połączyć te dane jakimś polem, które będzie zawierała tabela oraz pliki z Bloba. Wykorzystamy do tego tytuł artykułu, który jest zapisywany w naszej bazie.

Najważniejszą częścią jest dodanie meta danych do bloba, również z tytułem artykułu, aby poinformować usługę, do którego indeksu ma trafić zawartość pliku. Następnie należy zrzutować dodawaną meta daną na odpowiednie pole w indeksie, co zaimplementowano poniżej.

Dane z bazy oraz przykład meta danych znajdujące się na Blobie.

Ponadto do indeksu możemy dodać suggester, oraz scoring profile.

Tworzenie indeksu

Musimy teraz stworzyć dwa indeksery, które będą ściągać dane z naszych źródeł. Musimy jednak pamiętać o zmapowaniu pól title z meta danych boba, oraz zawartości pliku. Wykona to poniższa metoda.

Odpalamy naszą aplikację. Jeżeli wszystko poszło bez błędów, możemy pisać zapytania.
W tym przypadku również napiszemy konsolówkę. Kod całego programu znajduje się w repozytorium pod adresem: https://github.com/swislockikacper/AzureSearchQueryExample.

Funkcja, która implementuje zapytanie, wygląda następująco:

Po otrzymaniu wyników, należy je zdeserializować.

Podsumowanie

Azure Search jest bardzo rozbudowanym i pożytecznym narzędziem — co ważne jest cały czas rozwijany. Nie jest także skomplikowany, wszystko można stworzyć z poziomu kodu, lub też wyklinać. W wielu przypadkach może ułatwić życie. Nie przedstawiałem tutaj samego działania podpowiadania oraz innych ciekawych funkcjonalności, jednak korzystanie z nich jest równie proste, co samo wyszukiwanie.

Zapraszamy do dyskusji
Nie ma więcej wpisów

Send this to a friend