Architektury Usług Internetowych laboratorium nr 6: Wyszukiwanie usług w systemie BeesyCluster Jakub Kuryłowicz, dr inż. Paweł Czarnul jakub.kurylowicz@eti.pg.gda.pl, pczarnul@eti.pg.gda.pl Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska, 2011 1 Wprowadzenie Celem laboratorium jest zapoznanie się z mechanizmem wyszukiwania usług w systemie BeesyCluster (http://beesycluster2.eti.pg.gda.pl:10040/ek/main) oraz oceną jego jakości. Usługami podlegającymi wyszukiwaniu są aplikacje zawarte się w pakietach Linuksowych opublikowanych w systemie BeesyCluster [1], fizycznie znajdujące się na klastrach oraz same pakiety. Mechanizm wyszukiwania usług, ze względu na charakter ich opisu, wykorzystuje techniki wyszukiwania pełnotekstowego [2] zrealizowane w bibliotece Apache Lucene [3], która została wykorzystana w bieżącej wersji systemu. 2 Struktura opisu usługi Ze względu na wykorzystanie biblioteki Apache Lucene w mechanizmie wyszukiwania, opisy usług przechowywane są w odwróconym indeksie, porównywanie zapytania z opisami usług opiera się natomiast na modelu VSM [4]. Indeks złożony jest z dokumentów. Każdy z dokumentów odpowiada pojedynczej usłudze i składa się z następujących pól: AC package(pname) - nazwa pakietu; AC package(pgroup) - grupa pakietu; AC package(psummary) - krótki opis pakietu; AC package(pdescription) - opis pakietu; AC executable(ename) - nazwa aplikacji dostępnej jako usługa w systemie; AC executable(esummary) - krótki opis usługi; AC executable(edescription) - opis usługi przedstawiający jej funkcjonalność; 1
Rysunek 1: Formularz wyszukiwania usług. 3 Określenie kryteriów wyszukiwania Użytkownik określa parametry wyszukiwania korzystając z panelu przedstawionego na Rys. 1. Dostęp do panelu możliwy jest z pozycji Find Service z menu po lewej stronie. Jedynym wymaganym elementem jest zapytanie tekstowe. W panelu wyszukiwania, użytkownik ma możliwość wskazania: uwzględnienia kolejności słów w przypadku zapytania frazowego (w sąsiedztwie) ( consider word order ); domyślnego operatora dla termów występujących w zapytaniu ( query s term operator ); rozwinięcia termów z zapytania przez synonimy ze słownika Wordnet ( query expansion ) wraz z określeniem wag dla użytych synonimów ( boost ); uwzględnienia określonych pól opisu usługi ( include * ), w obrębie których ma odbyć się wyszukiwanie wraz z nadaniem wagi (wzmocnienia) dla określonego pola ( boost * ); wyszukiwania jedynie w obrębie usług dostępnych tj. takich, których aplikacje są dostępne (odpowiadające im pakiety są zainstalowane) ( only over installed packages ); 2
wyszukiwania jedynie wśród pakietów zawierających aplikacje, na bazie których powstały usługi ( only over packages with executables ); grupy usług, w obrębie której ma odbyć się wyszukiwanie ( in group ); liczby usług zwróconych w ramach wyszukiwania ( max results ). Użytkownik w wyniku wyszukiwania otrzymuje listę znalezionych usług, z poziomu której, możliwe jest zgłoszenie komentarza poprzez wybranie send feedback. Na zwróconej liście usług w kolumnie is proper, użytkownik określa również, które ze znalezionych usług są odpowiednie dla danego zapytania. Zaznaczone przez użytkownika pozycje zgłaszane są wraz z komentarzem. 4 Język zapytań 4.1 Termy, pola i znaki specjalne Wprowadzone zapytanie jest rozbijane na termy i operatory. Termem może być pojedyczne słowo lub fraza. Frazą jest grupa słów otoczonych cudzysłowem. W zapytaniu mogą wystąpić operatory logiczne, łączące termy w wyrażenia logiczne, co umożliwia tworzenie złożonych zapytań. W przypadku braku operatorów w zapytaniu, domyślnie wykorzystywany jest operator odpowiadający sumie zbiorów. Każda z usług składa się z pól, dzięki czemu podczas formułowania zapytania można wskazać, które z pól zostaną uwzględnione podczas wyszukiwania. Dla przykładu, w wyniku wywołania zapytania: BC PKG SUMMARY:"image" BC EXEC SUMMARY:"convert" znalezione zostaną usługi zawierające term image w polu BC PKG SUMMARY lub term convert w polu BC EXEC SUMMARY. W formułowanym zapytaniu wykorzystywane są znaki, które domyślnie są zastrzeżone: +,, &&,,!, (, ), {, }, [, ], ˆ,,,,?, :, \. Aby użyć znaku znajdującego się na liście odnoszącego się do opisu usługi, należy poprzedzić go znakiem \. 4.2 Wyszukiwanie z użyciem metaznaków Możliwe jest tworzenie zapytań z wykorzystaniem metaznaków jednokrotnych i wielokrotnych dla pojedynczych termów. Metaznakowi jednokrotnemu odpowiada symbol?, użycie go oznacza wyszukiwanie termów pasujących do wzorca, po zastąpieniu metaznaku jakimkolwiek znakiem. Dla przykładu, w celu znalezienia słowa text lub test należy wprowadzić: te?t Metaznakowi wielokrotnemu odpowiada symbol, użycie go oznacza wyszukiwanie termów pasujących do wzorca, po zastąpieniu metaznaku zerem lub większą liczbą wystąpień znaków w miejscu symbolu. Metaznaku domyślnie można używać na jakiejkolwiek pozycji w termie, oprócz pierwszej, co domyślnie jest niedozwolone ze względów wydajnościowych. W celu znalezienia słów test, tests lub testing należy użyć: test* 3
4.3 Wyszukiwanie rozmyte Terminem wyszukiwanie rozmyte zwykło się określać wyszukiwanie oparte na wykorzystaniu metaznaków w zapytaniu. W tym przypadku, terminem tym określa się wyszukiwanie oparte na podobieństwie w pisowni termów, bazujące na metryce odległości Levenshtein a (odległości edycyjnej). Metryka ta, oznacza miarę odmienności napisów, zdefiniowaną jako najmniejszą liczbę działań prostych (wstawienie, usunięcie lub zamianę) wymaganą do zmiany jednego napisu w drugi. Stosuje się ją dla termów będących pojedynczymi słowami dopisując znak na końcu termu. Zapewnienie dodatkowego parametru w postaci liczby zmiennoprzecinkowej z przedziału 0, 1 po znaku, pozwala określić spodziewany stopień podobieństwa. Wartości bliskie liczbie 1.0 implikują dopasowanie termów różniących się w niewielkim stopniu (w przypadku braku parametru, domyślną wartością jest 0.5). Dla przykładu, po wprowadzeniu: convert 0.7 zwrócone zostaną usługi zawierające w opisie słowa: convert, converter, conversion, converting lub ConTeXt. 4.4 Wyszukiwanie w sąsiedztwie Możliwe jest wyszukiwanie słów w określonej odległości od siebie, poprzez dopisanie znaku na końcu frazy, bezpośrednio po nim podając liczbę całkowitą, określającą maksymalną dopuszczalną odległość pomiędzy słowami. Dla przykładu, chcąc znaleźć usługi, w których opisie występują słowa convert oraz image w odległości nie większej niż 5 słów, należy ułożyć następujące zapytanie: "convert image" 5 4.5 Wyszukiwanie w zakresie Możliwe jest wyszukiwanie w obrębie usług, w których termy z poszczególnych pól znajdują się w wyznaczonym przedziale, określonym porządkiem leksykograficznym. Wyszukiwanie może odbywać się z włączeniem lub wyłączeniem dolnej oraz górnej granicy przedziału. Dla przykładu, w wyniku wywołania zapytania: BC EXEC SUMMARY:[convert TO image] zwrócone zostaną usługi, które w polu o nazwie BC EXEC SUMMARY zawierają termy, z wartościami między convert oraz image. Podobne zapytanie bez uwzględnienia termów występujących w zapytaniu, należy sformułować następująco: BC EXEC SUMMARY:{convert TO image} 4.6 Wzmacnianie termów Możliwe jest nadawanie wag poszczególnym termom poprzez użycie znaku ˆ oraz współczynnika wzmocnienia. Im większy współczynnik, tym ważniejsze będą usługi zawierające wskazany term. Dla przykładu, wyszukując: convert between images można nadać większą wartość dla termu images poprzez: 4
convert between images^5 Wzmocnienia można równie dobrze używać w przypadku fraz: convert "between images"^5 4.7 Wykorzystanie operatorów logicznych Dostępnymi operatorami do łączenia termów w wyrażenia są: OR, AND, +, NOT oraz -. operator OR jest domyślnym operatorem wiążącym termy, co oznacza, że jest wykorzystywany w przypadku, gdy pomiędzy dwoma termami nie występuje żaden inny operator logiczny. Wyszukiwane są usługi, w których występuje przynajmniej jeden z termów. W teorii zbiorów, operator jest odpowiednikiem sumy zbiorów. Alternatywnie wykorzystany może zostać symbol zamiast słowa OR. Dla przykładu w celu znalezienia usług zawierających słowo convert lub frazę between images, należy użyć: convert "between images" lub convert OR "between images" operator AND umożliwia wyszukiwanie usług, w których muszą wystąpić termu powiązane w wyrażeniu. W teorii zbiorów, jest odpowiednikiem przecięcia zbiorów. Alternatywnie, zamiast słowa AND można wykorzystać symbol &&. Dla przykładu, w celu znalezienia usług, w których występują słowa convert i image, należy użyć: "convert" AND "image" operator + określa konieczność wystąpienia termu w opisie usługi. Dla przykładu, w celu znalezienia usług, w których opisie występuje słowo convert oraz może wystąpić słowo image, należy użyć: +convert image operator NOT wyklucza usługi zawierające w opisie term występujący bezpośrednio po operatorze. W teorii zbiorów, odpowiada dopełnieniu zbioru. Alternatywnie, zamiast słowa NOT można wykorzystać symbol!. Dla przykładu, w celu znalezienia usług zawierających frazę between images i nie zawierających słowa convert, należy użyć: "between images" NOT "convert" operator - wyklucza usługi zawierające w opisie term występujący bezpośrednio po operatorze. Dla przykładu, w celu znalezienia usług zawierających w opisie słowo convert i nie zawierających frazy between images, należy użyć: convert -"between images" 5
4.8 Przykłady zapytań W zapytaniu a tool 0.7 for convertingˆ5 eps to pdf 10 można wyróżnić następujące wymagania użytkownika: w wyszukiwaniu uwzględnione zostanie jedynie pole BC EXEC SUMMARY 1 ; słowa eps oraz pdf występują w odległości nie większej niż 10 pozycji; słowo converting jest pięciokrotnie ważniejsze niż pozostałe termy w zapytaniu; słowo tool podlega wyszukiwaniu rozmytemu ze współczynnikiem 0.7 (wyszukiwane będą również termy, niewiele różniące się w pisowni od słowa tool); domyślnym operatorem dla termów jest operator OR. Wyszukiwanie frazowe (w sąsiedztwie) zobrazowane zostało na Rys. 2 dla przykładowego zapytania convert text to html 6. Rysunek 2: Opis usługi txt2html, zwróconej w ramach wyszukiwania z uwzględnieniem odległości pomiędzy termami. Możliwe jest również grupowanie fraz korzystając z operatorów logicznych. Jak pokazano na Rys. 3, w ramach zapytania convert text to 2 AND html rtf 2 zwrócona została usługa, która nie została by znaleziona w ramach zapytania convert text to html rtf 2. [3, 4, 2] Rysunek 3: Opis usługi enscript, zwróconej w ramach wyszukiwania z uwzględnieniem odległości pomiędzy termami oraz grupowaniem fraz. Literatura [1] Pawel Czarnul, Michal Bajor, Marcin Fraczak, Anna Banaszczyk, Marcin Fiszer, and Katarzyna Ramczykowska. Remote Task Submission and Publishing in BeesyCluster: Security and Efficiency of Web Service Interface. In PPAM, volume 3911, pages 220 227, Germany, 2006. Springer. 1 W obecnej implementacji, pola BC PKG NAME oraz BC EXEC NAME uwzględniane są zawsze podczas wyszukiwania. 6
[2] Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schtze. Introduction to Information Retrieval (Online Edition). Cambridge University Press, http://nlp.stanford.edu/ir-book/information-retrieval-book.html, Kwiecien 2009. [3] Apache Lucene: http://lucene.apache.org/, Luty 2010. [4] Dik L. Lee, Huei Chuang, and Kent Seamons. Document Ranking and the Vector-Space Model. IEEE Softw., 14(2):67 75, 1997. 7