субота, 27 априла, 2024
Интернет, мреже и комуникације

Apache Lucene – корак до Google-a (1. део)

Аутор: Дејан Чугаљ

Људска потреба за откривањем новог нас је одвела на Месец, сутра ће нас, вероватно, одвести и на Марс, Венеру, Плутон, али оно са чим тренутно морамо да се сложимо је да интернет представља највеће људско достигнуће. Web претраживачи су у великој мери утицали на развој интернета као примарног извора информисања на крају 20. и почетку 21. века. Они нам толико олакшавају живот дајући нам информације „на длану”, да се више и не питамо шта је то заправо информација.

Превише је компликовано описати на ком принципу функционишу алгоритми web претраживача, чак и укратко, али један од основних теоријских темеља на коме се заснивају ови алгоритми је научна област која се бави теоријом информација и кодовања. Вероватно се питате зашто је толико битан овај део научне области IT технологија, када је, на крају крајева, како и сам назив каже, ово у принципу филозофска (теоријска) област, а и већина корисника интернета није никада ни чула за „то”. Наравно да се овај део научне области IT технологија не може представити једном реченицом, овим текстом или неким кратким описом, али у суштини, оно што смо добили Шеноновим (енгл. Claude Elwood Shannon) истраживањем теорије информација, је одговор на питање шта је у ствари низ битова, бајтова једне web странице, слике, филма, јавног/тајног кључа SSL сертификата, у перспективи, податка као носиоца информације која се може математички „измерити”. Због тога, у научним круговима, Шенон важи за „оца” теорије информација. Вредност података (информација) као једног од основних и кључних делова web претраживача се пресликала на студентско животно остварење Larry Page-a и Sergey Brin-a, а назвали су га Google.

Теорија информација нам је донела још један занимљив део, а то је математичка представа количине података на web-у. Ово није текст који се бави тим статистичким подацима, али верујте да се ради о огромној количини података која се мери Yottabyte-овима.


Сва та огромна количина информација савременог доба је ту, чак може да се каже да је и опипљива на неки виртуелан начин, али се поставља питање како доћи до ње. Шта је суштински информација, колико она вреди, колико је „тешка” за упит (query) ка траженом податку и сл., све нам је то на папиру дао Шенон, али оно што имплементира математику са тог папира су у ствари алгоритми интернет web претраживача. У принципу, сви интернет web претраживачи раде на поприлично логичан и предвидљив начин, али с обзиром на тајност алгоритама које користе, не може се са сигурношћу тврдити да је то баш тако, но… Сведоци смо развоја једног од највећих open source пројеката, GNU/Linux-a, замислите како би изгледао FLOSS Google (прим. аут.). Звучи невероватно, али без обзира на профит компанија које поседују највеће светске web претраживаче и наравно њихове алгоритме, неке од њих су вољне да у неким моментима предају макар део свог интелектуалног блага јавности, као што се, на нашу срећу, десило децембра 2004. када је Google Labs јавно објавио MapReduce алгоритам, што је open source заједница знала да искористи. Да ли се кају или не, не знамо, јер се поставља питање шта су добили… Објављивањем само дела свог алгоритма, Google Labs нам је заголицао машту принципом и сложеношћу система по којем алгоритми web претраживача функционишу. За све оно што смо ми од свега тога добили, заслуге дугујемо open source пројекту Apache Lucene, као само једном од пројеката из породице Apache Software Foundation’s Jakarta family (Java), као и оснивачу овог пројекта, Doug Cutting-у.

Doug Cutting

Токенизација (укратко)

Приликом учења било ког од програмских језика, у једном тренутку се морате сусрести са термином „токенизација”, у класама обраде string литерала. Токенизација је, заправо, обично раздвајање речи из реченице. Када кажемо раздвајање речи, мислимо на издвајање речи неким pattern-ом (шаблоном) који, на пример, раздваја речи по правилу празних поља, зареза итд. Реченица: „Ово је диван дан”, после токенизације са преломом у нови ред би изгледала овако:

Ово

је

диван

дан

Ово је битно јер се, генерално гледано, овим принципом воде и web претраживачи. Свака реч представља индекс тј. тежину информације у податку, што нас опет враћа Шенону и његовој теорији информација, као и питању која је количина информација стварно садржана у свакој од ових речи. Можете да приметите да су предикати, именице и придеви, једни од главних носиоца информација, али то не мора по правилу увек да буде тако. Анализом гореневедене реченице, можемо да издвојимо речи: „Ово” и „је”, тзв. носиоце података који немају на информационој тежини, али су ипак подаци, док: „диван” и „дан” представљају податак који носи неку информацију у спрези контекста реченице те као такви имају информациону тежину. Вероватно се питате зашто је битно у ком се контексту горенаведена реченица може протумачити (индексирати), као и колико је информација садржано у свакој речи, а то су управо тајне које ћемо, надамо се и успешно, разоткрити. Звучи сулудо, лако и просто, али тако је. У овом малом и простом примеру можете да видите и наслутите SEO (Search Engine Optimization) принцип. Поставља се питање који је значај кључних речи (key words) приликом оптимизације неког сајта и зашто неке од речи добијају већи „значај” од других приликом индексирања web претраживача. Иако вам тренутно звучи нејасно како све ово функционише, покушаћемо то детаљније да вам објаснимо путем Apache Lucene пројекта као и читаве породице open source пројеката из фамилије Jakarta, кроз серију чланака објављених у ЛиБРЕ! часопису. Свако ко себе назива SEO стручњаком, морао би да познаје принципе Apache Lucene пројекта (прим. аут.).

Apache Lucene – Опис пројекта

Да бисте добили прави осећај шта је Apache Lucene, и колико је моћан, морате прво да се запитате колико често имате потребу за добијањем информација, било са тврдог диска вашег рачунара или са web-a. Замислите да поседујете вашу библиотеку е-књига, само е-књига, која се налази у једној фасцикли а која је подељена на потфасцикле (по категоријама, темама, па и кључним речима – метаподацима из самог е-документа). Пошто сваки документ има метаподатке (датум када је направљен, датум када је измењен, назив аутора, кључне речи), проналажење одређеног документа по метаподацима је изводљиво и релативно лако, али прелазак у нижи ниво анализе (као што је претрага по садржају), представља домен научне фантастике ако се, наравно, ради ручно. Вероваћете нам ако кажемо да је то ипак могуће, да је могуће доћи до анализе и резултата претраге за време мерено милисекундама, независно од величине и комплексности података, а да је резултат претраге могуће приказати са свим програмерским детаљима (којих, узгред, има пуно). Управо такву врсту претраге обавља Apache Lucene, библиотека за претрагу, писана у програмском језику Java, која омогућава имплементацију сопственог и независног претраживача, којем је само машта лимит.

Наставак