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

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

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

Шта је стварно Lucene?

Lucene је Java-ина библиотека за проналажење информација (енгл. Information Retrieval – IR). „Apache Lucene – корак до Google-a (1. део)”, чланак који је изашао у броју 12, само је „загребао лед испод километарске ледене површине” покушајем приближавања шта суштински значи информација, и када кажемо IR мислимо на процес тражења информација у документима који су у електронској форми. Чланак у прошлом броју је уводни део, више као теоријска припрема за дубље упуштање у опис Lucene библиотеке.

Lucene није већ предефинисан и спреман за употребу (ready to use) програм, већ више представља шаблон (freamework) за могућност сопствене имплементације претраге у било који од програма, небитно да ли смо га написали ми или неко други. Из овог се види да је потребно неко почетничко програмерско знање програмског језика Java (Python или C#), али стварно почетничко, за коришћење и имплементацију основних делова ове библиотеке. Читаоци ће можда, а често се и дешава, да помешају Lucene са web претраживачима, можда чак и да је упореде са њима, што она у суштини није. Као што смо рекли, претраживачи су склоп уједињених и синхронизованих модула којима се приписује велика сложеност, па тако и Lucene представља само један део, модул, који тај склоп чини изводљивим и који ћемо покушати да имплементирамо како се будемо приближавали крају серијала о Lucene. Наравно, овде спомињемо само web претраживаче, али у суштини, претрага и добијање информација се осим на интернету користи и у разним другим научним областима, почевши од: data mining-а, биологије, метеорологије (утврђивање разних климатских образаца), финансија (берзе), итд.

Апстрактност са којом се боримо само пишући о Lucene доводи до момента који гласи: где смо то ми икада користили Lucene? Само пар примера: MySpace, LinkedIn, Fedex, Apple, Eclipse IDE (програмерима познато развојно окружење), MIT’s OpenCourseWare, Disney итд. Списак свих, тренутно „Powered by Lucene” пројеката можете видети на web адреси: http://wiki.apache.org/lucene-java/PoweredBy.

Шта стварно може Lucene?

Напоменули смо да Lucene није готов, спреман за употребу програм за претрагу, већ представља само подлогу, позадину на којој се програмирају програми, што можемо представити сликом.

Тренутно препознајемо само главни (core) део, али већ у следећем броју ће бити све јасније.

Овде је битно напоменути да библиотеци Lucene није пресудна локација података које прима: документи на локалном тврдом диску, web серверу, бази података. Такође, није битно ни коју екстензију имају: .XML, .HTML, .PDF, или било којег другог формата, из простог разлога што је програмер задужен за екстракцију самог текста из документа. Другим речима, да би Lucene била у могућности да „одради посао” индексирања, програмер је тај који мора да спреми податке за Lucene.

У зависности од домена самог проблема и захтева корисника, могу да се користе разне помоћне библиотеке за саму екстракцију текста из е-документа, web странице или базе података итд.

Претпоставимо да имамо web страницу на којој би требало да претражимо текст. У овом случају бисмо морали да напишемо или да искористимо већ написану библиотеку која мора да очисти (парсира) ту web страницу; другим речима, морали бисмо да очистимо све HTML tag-ове који нам не требају да бисмо на крају дошли до текста који се обично налази између

<body> </body>

tag-ова HTML језика, па у следећем кораку да се очисте параграфи, подебљан текст, па можда ако желимо линкове да извучемо који се налазе у

 <a href="http://www.w3schools.com/">Visit W3Schools</a>

tag-овима (десни клик на web страницу, па преглед кôда (View Source), мислимо да ће вам бити јасније). Видимо да је у овом домену претраге web parser интернет странице јако битан и овде се највише даје на значају баш њима док је сам рад са Lucene много лакши.

Приликом писања програма вероватно ћете дупло више времена изгубити припремајући, парсирајући е-документа него што је сама имплементација и индексирање Lucene библиотеком. То само говори о снази Lucene библиотеке (прим. аут). Такође, у случају да желимо да претражимо наше PDF документе који се налазе на тврдом диску, прво што треба да урадимо је да искористимо већ написану библиотеку која је у могућности да „извуче” текст из те врсте е-докумената, па тек онда да проследимо Lucene да индексира. Списак екстензија електронских докумената веома је велики (.PDF, .DOC, .DOCX, .ODT, .TXT… ). Користан линк екстензија датотека http://www.fileinfo.com/filetypes/common.

Идеја којом се водимо и која ће, надамо се, на крају украсити овај серијал о Lucene је пројекат написан у Java програмском језику, а корист самог програма је претрага PDF докумената по садржају, те из тога произилази савет за оне који су се већ сусрели са Lucene да за екстракцију текста користе предивну библиотеку „Apache Tika” јер је то Java-ина библиотека која подржава највећи број екстензија е-докумената, и која је такође под „Apache Software License, Version 2.0” (open source) лиценцом. Користан линк је http://tika.apache.org.

Овој веома корисној библиотеци, а и такође првом кораку имплементације Lucene библиотеке – екстракцијом текста (мало програмирања), ћемо се позабавити већ у следећем броју ЛиБРЕ! часописа!

Претходни део | Наставак