universiteti i prishtinЁs - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/punim diplome -...

48
UNIVERSITETI I PRISHTINЁS FAKULTETI I INXHINIERISË ELEKTRIKE DHE KOMPJUTERIKE Tema: Zhvillimi i një makine kërkuese për domenin e blerjes online Kandidati: Vigan Abdurrahmani Mentori: Prof. Dr. Lule Ahmedi Prishtinë, shtator 2016

Upload: buidan

Post on 29-Aug-2019

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

UNIVERSITETI I PRISHTINЁS

FAKULTETI I INXHINIERISË ELEKTRIKE DHE KOMPJUTERIKE

Tema: Zhvillimi i një makine kërkuese për domenin e blerjes online

Kandidati: Vigan Abdurrahmani

Mentori: Prof. Dr. Lule Ahmedi

Prishtinë, shtator 2016

Page 2: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Faqe ii

Abstrakt Makinat kërkuese (Web Search Engines) janë sisteme softuerike të cilat janë të dizajnuara për kërkim të informacioneve në Ueb. Këto informacione ruhen në bazat e mëdha të të dhënave dhe prezantohen si ueb faqe, imazhe, video apo ndonjë format tjetër i të dhënave. Ekzistojnë edhe makina kërkuese lokale të cilat merren me kërkimin vetëm brenda një sistemi softuerik (rasti i kërkimit brenda Facebook). Në këtë punim të diplomës është trajtuar rasti i zhvillimit të një makine kërkuese modeste për fushën e shitblerjes online (E-Commerce). Qëllimi kryesor i sistemit është gjetja dhe prezantimi i produkteve të cilat merren nga Ueb sajtet e shitblerjes online në bazë të termave të kërkimit që jepen nga shfrytëzuesit e sistemit. Fjalët kyçe: Makinat kërkuese, Web Crawler, Indeksimi, Rangimi i kërkimit

Page 3: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Faqe iii

Abstract Search Engines are software systems that are designed for searching information on World Wide Web. The retrieved information is stored into big databases and is represented in format of web sites, images, videos or another data format. There are also some local search engines which handle searching only inside a single software system (case of Facebook Search). In this bachelor thesis we treat the case of developing a modest search engine in domain of online shopping (E-Commerce). The main purpose of this system is finding and representing of products which are retrieved from shopping web stores based on search terms entered from users. Keywords: Search Engine, Web Crawler, Indexing, Search Ranking

Page 4: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Faqe iv

Falënderime Fillimisht falënderoj përzemërsisht familjen time e cila gjithmonë më është gjendur pranë dhe më ka përkrahur gjatë periudhës së studimeve. Inkurajimi dhe besimi nga ana e tyre ka qenë arsyeja kryesore e suksesit të deri tanishëm. Më pas falënderoj kolegët dhe profesorët të cilët gjithmonë më kanë përkrahur që të vazhdoj më teje. Falënderime të veçanta i kushtoj profesoreshës Dr. Sc. Lule Ahmedi, profesorit Msc. Korab Rrmoku për ndihmesën në realizimin e këtij punimi. Së fundi falënderime të përzemërta i kushtoj profesorit Msc. Valon Raça kontributi i të cilit është shtylla kryesore e suksesit të deri tanishëm në fushën e Inxhinierisë Kompjuterike.

Page 5: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Faqe v

Parathënie Në këtë punim do të trajtohet zhvillimi i një sistemi të shpërndarë i cili realizon funksionalitetin e një makine kërkuese për një domen të caktuar. Sistemi i zhvilluar do të marrë informata nga sistemet tjera të cilat do ti paraqes më pas tek shfrytëzuesi. Domeni i cili do të trajtohet i takon fushës së shitblerjes online të produkteve. Si sisteme ekzistuese ku do të marrim informacionet janë ueb sajtet E-Commerce ku bëjnë pjesë Amazon, Ebay, Walmart dhe AliExpress. Çështjet kryesore që do të shtjellohen në këtë sistem janë:

1. Web Crawling i artikujve 2. Indeksimi i artikujve 3. Algoritmi për rangimin e artikujve në bazë të termave të kërkimit 4. Balancimi i shpejtësisë dhe performancës së sistemit 5. Menaxhimi i vjetërsisë së informacioneve në bazën e shënimeve

Ndër çështjen që mbesin jashtë trajtimit në këtë dokument është menaxhimi i memories së bazës së shënimeve ku ruhen të dhënat (Data Storage) dhe shpërndarja e sistemit në makina paralele të cilat kryejnë funksionalitetin e sistemit. Në vijim gjeni strukturën e organizimit të këtij punimi: Kapitulli 1 – Hyrja dhe motivi – ky kapitull tregon motivin për trajtimin e kësaj teme, si dhe jep një informim të shkurtër për problemet që do të trajtohen në këtë punim. Kapitulli 2 – Parimet e punës së makinave kërkuese – në këtë kapitull shpjegohen parimet se si punojnë makinat kërkuese në përgjithësi dhe trajtohet rasti i ueb crawling, indeksimit, dhe “PageRank” algoritmi i Google si shembull për serverët e pyetësorëve (query servers). Kapitulli 3 – Parimet e punës së “E-Shop” makinës kërkuese – ky kapitull shpjegon makinën kërkuese të zhvilluar si pjesë e këtij punimi. Kapitulli 4 – Algoritmi i rangimit “Warehouse” – në këtë kapitull trajtohet algoritmi Warehouse i cili shërben për rangimin e rezultateve të kërkimit. Kapitulli 5 – Diskutime dhe konkluzione – në këtë kapitull gjendet përmbledhje e përfundimeve të arritura përmes këtij punimi si dhe definimi i problemeve që mund të trajtohen në punimet e ardhshme.

Page 6: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Faqe vi

Përmbajtja 1 Hyrja ..................................................................................................................................... 1

1.1 Hyrje ................................................................................................................... 1 1.2 Motivimi ............................................................................................................. 1 1.3 Përshkrimi i problemit ........................................................................................ 2

2 Parimet e punës së makinave kërkuese .................................................................. 3 2.1 Komponentët e makinave kërkuese dhe ndërlidhjet mes tyre ............................ 4 2.2 Web crawling ...................................................................................................... 5 2.3 Procesi i indeksimit ............................................................................................. 6 2.4 Algoritmet e rangimit, PageRank Algoritmi ....................................................... 7

3 Parimet e punës së E-Shop makinës kërkuese ......................................................... 10 3.1 Arkitektura e sistemit ........................................................................................ 11

3.1.1 Modeli arkitektural, komponentët dhe ndërlidhjet mes tyre ......................... 11 3.1.2 Modeli logjik, entitetet dhe ndërveprimet ..................................................... 12 3.1.3 Modeli i bazës së shënimeve......................................................................... 15 3.1.4 Përparësitë dhe të metat e arkitekturës së zgjedhur ...................................... 16

3.2 Procesi i web crawling ...................................................................................... 16 3.3 Procesi i indeksimit ........................................................................................... 21

3.3.1 Rasti i ndërveprimit në mes të komponentëve gjatë indeksimit ................... 22 3.4 Procesi i kërkimit .............................................................................................. 25

3.4.1 Ndërfaqja e shfrytëzuesit .............................................................................. 25 3.4.2 Parimet e punës ............................................................................................. 26

4 Algoritmi i rangimit Warehouse ................................................................................. 28 4.1 Filtrat e algoritmit ............................................................................................. 29

4.1.1 WCR (Word Closeness Rule) ....................................................................... 30 4.1.2 KCR (Keyword Constant Rule) .................................................................... 31 4.1.3 At least once rule .......................................................................................... 32 4.1.4 Property priority rule..................................................................................... 32

4.2 Përshtatja e Warehouse algoritmit për nevojat e E-Shop.................................. 33 4.2.1 Aplikimi i filtrit WCR ................................................................................... 33 4.2.2 Aplikimi i at least once rule .......................................................................... 33 4.2.3 Aplikimi i filtrit KCR.................................................................................... 33 4.2.4 Aplikimi i property priority rule ................................................................... 34 4.2.5 Filtrat shtesë .................................................................................................. 35

5 Diskutime dhe konkluzione .......................................................................................... 36 6 Shtesat ................................................................................................................................ 37

6.1 Lista e figurave ................................................................................................. 37 6.2 Lista e shembujve ............................................................................................. 38 6.3 Lista e formulave .............................................................................................. 39 6.4 Lista e shkurtesave ............................................................................................ 40

7 Bibliografia ....................................................................................................................... 41

Page 7: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Hyrja

Faqe 1

1 Hyrja

1.1 Hyrje Makinat kërkuese kanë ekzistuar qysh në kohën kur është zbuluar WWW (World Wide Web). Deri në vitin 1993 indeksimi i ueb sajteve është realizuar në mënyrë manuale nga ana e njeriut. Në atë kohë kjo nuk paraqiste një problem të madh për shkak se numri i ueb serverëve ishte i kufizuar. Mirëpo më pas me shtimin jashtëzakonisht të madh të ueb sajteve lindi edhe nevoja për automatizimin e këtij procesi, ku në këtë rast hyjnë në përdorim makinat kërkuese (makina e parë kërkuese “Archie”). Zhvillimet në teknologji dhe zhvillimet e mëdha në inteligjencë artificiale kanë pasur kontribut mjaftë të madh në avancimin e makinave kërkuese. Deri sa në fillim kërkimet e këtyre makinave janë bazuar vetëm në gjetjen e termave të kërkimit në dokumentet përkatëse, sot ato bazohen në relacionet e ndryshme mes dokumenteve dhe aplikojnë algoritme shumë të avancuara gjetjen dhe rangimin e dokumenteve. Sot këto makina përveç funksionalitetit për gjetjen e ueb sajteve gjithashtu mundësojnë nxjerrjen e fakteve, rekomandimin e kërkimeve duke u bazuar në relacionet mes dokumenteve (rasti i “Google Knowledge Graph”) etj.

1.2 Motivimi Sistemet e shpërndara është njëra ndër lëmit e mia më të parapëlqyera në fushën e inxhinierisë kompjuterike, gjë që më ka shtyrë të zgjedhë si temë zhvillimin e një makine kërkuese për një fushë të caktuar. Interesimi mjaftë i madh në lëmit e komunikimit ndërmjet sistemeve të ndryshme, procesit të komunikimit nëpërmes protokollit HTTP (Hypertext Transfer Protocol) dhe përdorimi i procesimit paralel më ka motivuar të nisë këtë punim modest në lëmin e makinave kërkuese. Qëllimi im në këtë punim diplome ka qenë zhvillimi i një sistemi modest sa më origjinal, ku jam munduar të përdorë njohuritë e marra në çdo lëndë gjatë tri viteve të studimeve baqelor për zhvillimit e këtij sistemi.

Page 8: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Hyrja

Faqe 2

1.3 Përshkrimi i problemit Zhvillimi i makinave kërkuese paraqet një sfidë mjaftë të vështirë. Këto makina kërkuese duhet të indeksojnë miliona pyetësor gjatë ditës, duhet të menaxhojnë besueshmërinë e informacioneve të marra nga ueb, ndërsa në anën tjetër numri informacioneve që vendosen në ueb ka një rritje jashtëzakonisht të shpejtë. Ndër problemet kryesore që duhet të trajtohen janë rangimi i kërkimit në mënyrë që kërkimi të jetë sa më efikas, optimizimi i shpejtësisë së kërkimit, menaxhimi i memories së depove të shënimeve (Data Storage), marrja vetëm e informacioneve të rëndësishme, parandalimi i mbushjes së depove të shënimeve me informacion duplikat dhe shumë probleme tjera. Makina kërkuese e cila do të trajtohet në këtë punim i takon fushës së shitblerjes online. Njëra ndër vështirësitë kryesore që hasen në këtë fushë është se nuk ekzistojnë shumë sisteme të cilat i kanë publike algoritmet dhe biznes logjikën e tyre të kërkimit. Për këtë arsye do të mundohemi të adaptojmë parimet e makinave kërkuese të përgjithshme si p.sh. “Google Search Engine”. Në këtë sistem do të trajtohen çështjet në vijim:

1. Përcaktimi i parimeve të punës së sistemit 2. Procesi i Web Crawling të artikujve nga 4 sisteme ekzistuese, 3. Parandalimi i marrjes së informacionit të gabuar, 4. Indeksimi i artikujve 5. Dizajnimi dhe implementimi i algoritmit i cili mundëson gjetjen sa më të saktë të

artikujve nga baza e shënimeve në përputhje me termat e kërkimit 6. Optimizimi e shpejtësisë së sistemit 7. Dizajnimi i arkitekturës e cila mundëson zgjerimin e lehtë të sistemit për

komunikimin me sistemet tjera

Page 9: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 3

2 Parimet e punës së makinave kërkuese Në fillim para zbulimit të makinave kërkuese gjetja e informacionit në ueb ka qenë mjaftë e vështirë. Mënyra e informimit për ueb sajtet e ndryshme është realizuar kryesisht përmes email mesazheve dhe përmes ueb direktoriumeve (Web Directories). Këto ueb direktoriume përmbanin një listë të vegzave (links) të ueb sajteve të organizuara në kategori të ndryshme. Për të shtuar një sajt në këto direktoriume duhej të merrej aprovimi nga ana e administruesit të direktoriumit. E meta kryesore e këtyre direktoriumeve ishte pasaktësia e madhe për gjetjen e informacionit të saktë që e kërkojmë.

Figura 2-1 Ueb direktoriumi vlib.org i cili është ende funksional

Hapi i parë drejtë krijimit të makinave kërkuese filloi me paraqitjen e web crawlers në vitin 1993. Këta komponente softuerike janë të aftë të shkarkojnë nga një ueb faqe listën e vegzave dhe kështu krijojnë një listë të re të faqeve për të vizituar. Kështu më pas filloi edhe zbulimi i algoritmeve të ndryshme për të ranguar vegzat, ku rasti më i njohur është “PageRank” algoritmi i zbuluar nga Lawrence Page dhe Sergey Brin (themeluesit e Google).

Page 10: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 4

2.1 Komponentët e makinave kërkuese dhe ndërlidhjet mes tyre Makinat kërkuese përbëhen nga tri komponentë kyçe përmes të cilave realizohet i tërë funksionaliteti i makinave kërkuese. Këta komponent janë:

1. Agjentët e të dhënave (input agents) 2. Makinat e bazave të të dhënave (database engines) 3. Serverët e pyetësorëve (query servers)

Këto komponentë nuk gjenden në një makinë të vetme por në shumicën e rasteve janë të shpërndara nëpër makina të shumta dhe paraqiten sikurse të ishte një makinë e vetme (vetia e transparencës së sistemeve të shpërndara[1]).

Figura 2-2 Komponentët kryesore të makinave kërkuese dhe funksionalitetet e tyre[2]

Agjentët e të dhënave e mbledhin informacionin nga uebi duke shkarkuar ueb faqe dhe identifikuar vegza të reja që do të shërbejnë si listë për mbledhje të informacioneve më vonë (procesi 1, 2). Më pas këtë vegza ruhen në bazat e të dhënave, ndahen në pjesë (fragmente) të ndryshme dhe fillon procesi i indeksimit të këtyre vegzave (procesi 3, 4). Proceset e deri tanishme sigurojnë informacionin që do ti shërbejë klientëve gjatë kërkimit. Roli i serverëve të pyetësorëve është trajtimi i kërkesave të shfrytëzuesve dhe gjetja e informacionit sa më të saktë nga baza e shënimeve. Këtu implementohen algoritmet e rangimit dhe paraqesin pjesën më kritike të sistemit pasi që kualiteti i kërkimit varet nga ky algoritëm.

Page 11: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 5

2.2 Web crawling Web crawling është proces i automatizuar përmes të cilit robotët softuerik shfletojnë uebin dhe shkarkojnë informacionet e nevojshme të cilat më vonë përdoren për indeksim. Këto informata përveç vegzave mund edhe të jenë informacion tjetër si p.sh. tekst ose ndonjë resurs tjetër, gjë që do të tregohet në kapitullin 3. Përmes këtyre mekanizmave sigurohen në mënyrë automatike informacionet më të reja nga uebi. Agjentët që mbledhin të dhëna ndahen në dy komponentë: web crawler dhe scrapers. Funksioni i web crawler-it është shkarkimi i faqeve duke u bazuar në listën e vegzave dhe më pas scraper-ët nxjerrin informatat e nevojshme nga përmbajtja e faqeve. Web crawler-ët shkarkojnë vetëm përmbajtje të HTML, nuk marrin resurse tjera të cilat janë të panevojshme si figurat, skriptat e ndryshme. Gjatë procesit të shfletimit të ueb sajteve web crawler-i në fillim shikon resursin robots.txt. Në këtë file shikojnë politikat e ueb sajtit (Robots Exclusion Standard) të cilat tregojnë se çka lejohet të shkarkohet. Në vijim gjendet një shembull i këtyre politikave:

Megjithatë kjo nuk i parandalon crawler-ët për të marrë informacionin pasi që shumë lehtë mund të modifikohet header-i user-agent i HTTP paketës. Përveç këtyre file web crawler-ët gjithashtu bazohen në meta tagjet dhe atributet që gjenden në ueb faqe për të identifikuar se çka duhet të marrin, p.sh. atributi nofollow i tregon crawler-it se nuk ka nevojë të merret kjo vegzë. Në vijim gjendet një figurë e cila tregon si e sheh njeriu një ueb faqe dhe se si e sheh një web crawler/scraper një ueb faqe.

User-agent: googlebot Disallow: User-agent: funbot Disallow: /secret/ User-agent: * Disallow: /

Shembull 2-1 Shembull i file robots.txt[2]

Page 12: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 6

Figura 2-3 Dallimi se si e sheh njeriu dhe Crawler-i ueb faqen[3]

Funksioni i scraper është nxjerrja e informacioneve të nevojshme që do të ruhen në bazën e shënimeve nga ueb faqja (mund të jetë edhe resurs tjetër përveç HTML tekst, p.sh. XML file). Këta scraper zakonisht kërkojnë tagje specifike, ku në shumicën e rasteve kërkojnë tagun <a> pasi që kërkojnë vegza. Në rastet kur kërkojnë informacione tjera zakonisht e trajtojnë dokumentin si XML dhe përdorin XPath dhe XQuery ose shprehje të rregullta (regular expressions) për të gjetur informacionin specifik[4].

2.3 Procesi i indeksimit Qëllimi i indeksimit është rritja e shpejtësisë së gjetjes së informacionit përkatës gjatë procesimit të kërkesave të shfrytëzuesve. Në fillim në bazën e të dhënave ruhen URL (vegzat) të cilat copëtohen si në formatin në vijim:

Figura 2-4 Visualizimi i indekseve të URL në bazën e të dhënave[2]

Page 13: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 7

Këto indeksa shumë lehtë mund të gjinden pasi që paraqesin numra, por mangësia e këtij indeksimi është se kërkimi bëhet përmes fjalëve. Tash në bazë të këtij indeksimi duhet të kërkohet në çdo vegzë nëse ekzistojnë fjalët e termit të kërkimit. Ky proces merr shumë kohë. Për të zgjidhur këtë problem ne aplikojmë indeksimin e fjalëve që ndryshe njihet si indeksimi revers (reverse index). Tash secila fjalë përmban listën e vegzave në të cilat gjendet kjo fjalë. Përmes kërkimit të indekseve të fjalëve evitohet problemi i shpejtësisë. Për shkak të numrit mjaftë të madh të fjalëve zakonisht këta indekse janë të shpërndara në shumë baza të shënimeve. Në vijim gjendet ilustrimi i indeksimit revers:

Figura 2-5 Visualizimi i indeksimit revers në bazën e shënimeve[2]

2.4 Algoritmet e rangimit, PageRank Algoritmi Siç u cek edhe më herët komponenti më i rëndësishëm i makinës kërkuese është algoritmi që përdoret për rangimin e të dhënave (në shumicën e rasteve të dhënat janë ueb faqet) gjatë trajtimit të kërkesave të klientit për shkak se ka ndikimin kryesor në kualitetin e shërbimeve të ofruara nga makina kërkuese. Shumica e këtyre algoritmeve janë sekret për shkak të se janë pika kyçe e suksesit të kompanive që ofrojnë shërbime të makinave kërkuese. Këto algoritme aplikojnë metoda të ndryshme matematikore në të dhënat në bazat e shënimeve për të radhitur informacionet e tyre në bazë të termave të kërkimit. Në këtë seksion ne do të trajtojmë algoritmin “PageRank” të implementuar nga Google i cili njihet si algoritmi më i suksesshëm. Vërejte, versioni që do të trajtojmë është publikimi i algoritmit në vitin 1998, që nga ajo kohë ky algoritëm ka evoluar mirëpo nuk është publikuar ndonjë version i ri. Ky algoritëm e llogarit rangimin e një ueb faqeje duke u bazuar në vegzat (hyperlinks) në mes të faqeve. Vegzat që drejtohen në një faqe njihen si “backlinks” dhe numri i këtyre vegzave ndikon në rangimin e një faqeje. Marrim një shembull ku i kemi katër ueb faqe të cilat kanë vegza ndërmjet veti si në figurën në vijim:

Page 14: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 8

Figura 2-6 Gjendja fillestare e faqeve në PageRank algoritmin[2]

Në fillim të gjithë faqet e kanë rangun e njëjtë (1 / numri i faqeve), pra vlera fillestare për të gjitha është 1/4. Formula për llogaritjen e rangimit të një ueb faqeje është si në vijim:

𝑃𝑃𝑃𝑃(𝑛𝑛) = �𝑃𝑃𝑃𝑃(𝑣𝑣)𝑁𝑁𝑣𝑣

𝑣𝑣∈𝐵𝐵𝑛𝑛

Formula 2-1 Ekuacioni i thjeshtësuar i PageRank algoritmit[2] Në bazë të kësaj formule rangu i faqes PR(n) përcaktohet duke llogaritur shumën algjebrike të secilës faqe që ka backlink tek faqja n dhe duke e pjesëtuar këtë shumë me numrin total të nyjeve që dalin jashtë Nv. Kështu shumat e faqeve janë si në vijim:

𝑃𝑃𝑃𝑃(𝐴𝐴) = 𝑃𝑃𝑃𝑃(𝐵𝐵)𝑁𝑁𝐵𝐵

+𝑃𝑃𝑃𝑃(𝐶𝐶)𝑁𝑁𝐶𝐶

+𝑃𝑃𝑃𝑃(𝐷𝐷)𝑁𝑁𝐷𝐷

=1 4⁄

2+

1 4⁄2

+1 4⁄

2=

13

𝑃𝑃𝑃𝑃(𝐵𝐵) =𝑃𝑃𝑃𝑃(𝐴𝐴)𝑁𝑁𝐴𝐴

+𝑃𝑃𝑃𝑃(𝐶𝐶)𝑁𝑁𝐶𝐶

=14

+1 4⁄

3=

13

𝑃𝑃𝑃𝑃(𝐶𝐶) =𝑃𝑃𝑃𝑃(𝐷𝐷)𝑁𝑁𝐷𝐷

=1 4⁄

2=

18

𝑃𝑃𝑃𝑃(𝐷𝐷) =𝑃𝑃𝑃𝑃(𝐵𝐵)𝑁𝑁𝐵𝐵

+𝑃𝑃𝑃𝑃(𝐶𝐶)𝑁𝑁𝐶𝐶

=1 4⁄

2+

1 4⁄3

=5

24

Page 15: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së makinave kërkuese

Faqe 9

Më pas ndodh edhe një iteracion tjetër dhe kemi rangimin përfundimtar:

Figura 2-7 Rangimet përfundimtare të faqeve pas tri iteracioneve në PageRank[2]

Ky proces përsëritet në mënyrë dinamike pas çdo procesi të crawling pasi që kemi ndryshim të gjendjeve të faqeve.

Page 16: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 10

3 Parimet e punës së E-Shop makinës kërkuese Deri më tani kemi diskutuar për makinat kërkuese të cilat shfletojnë tërë uebin dhe marrin përmbajtjet e ueb faqeve. Tash kemi një rast më ndryshe i cili adapton parimet e punës së makinave kërkuese të përgjithshme. Në rastin tonë jemi të fokusuar vetëm në domenin e shitblerjes online (E-Commerce). Qëllimi i makinës kërkuese që do të implementohet si pjesë e këtij punimi është marrja e produkteve nga ueb sajte të caktuara të ashtuquajtura si “Web Store” dhe reklamimi i tyre në sistemin tonë, përkatësisht në “E-Shop”. Në këtë sistem ne jemi të fokusuar vetëm në katër web store ku marrim informacion, të cilat janë:

1. Amazon, 2. Walmart, 3. Ebay dhe 4. AliExpress.

Informacioni i cili do të shkarkohet nga këto ueb sajte përfshijnë fushat në vijim:

- Emërtimi i produktit (titulli i artikullit) - Vegza që drejton për tek resursi i fotografisë së produktit - Vegza që drejton tek faqja specifike e produktit në sistemin përkatës - Çmimi i produktit

Për veç këtyre informacioneve bazë në disa web store shkarkohen edhe informata shtesë ku bëjnë pjesë kategoria e produktit (rasti Amazon) dhe shteti ku shitet produkti (rasti i Ebay). Në seksionet në vazhdim shtjellohet arkitektura dhe parimet e punës së sistemit “E-Shop Search Engine”.

Page 17: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 11

3.1 Arkitektura e sistemit

3.1.1 Modeli arkitektural, komponentët dhe ndërlidhjet mes tyre Sistemi i E-Shop është i shpërndarë në 3 komponentë kryesore:

1. Ueb serveri 2. Serveri i bazës së shënimeve 3. Windows shërbimi

Ueb serveri është komponentja kryesore e sistemit e cila shërben si urë lidhëse mes komponetëve tjera. Në ueb server janë të implementuara ndërfaqet në të cilat qasen shfrytëzuesit, agjentët për mbledhjen e informacioneve nga sistemet eksternale (web crawlers), ndërfaqja për qasje në bazën e shënimeve dhe ndërfaqja për pranimin e komandave nga windows shërbimi (windows service). Ky entitet është pasiv dhe aktivizohet vetëm në rastet kur kemi thirrje nga jashtë. Serveri i bazës së shënimeve ka dy funksionalitete bazë: ruajtjen e shënimeve dhe menaxhimin e vjetërsisë së të dhënave. Në bazën e shënimeve përveç produkteve dhe indekseve ruhen edhe lista e termave për procesin e ardhshëm të web crawling. Në këtë komponentë janë të implementuara oraret (schedules) të cilat aktivizohen çdo ditë në kohë të caktuar për të pastruar bazën e të dhënave nga produktet që kanë datë të skaduar (data e skadimit gjithmonë është një muaj pas regjistrimit të artikullit) dhe vendosin në listën e termave për web crawling indekset që kanë datë të skaduar. Pra baza e shënimeve në mënyrë të automatizuar menaxhon memorien duke larguar produktet që konsiderohen të panevojshme dhe ndihmon sistemin për tu azhurnuar me të dhëna sa më të reja. Përveç funksionaliteteve të përmendura deri tash baza e shënimeve ka edhe një orar (schedule) të veçantë detyra e të cilit është llogaritja e konstanteve të rëndësisë së indekseve. Përmes këtij procesi baza e shënimeve ka gjithashtu impakt në rritjen e kualitetit dhe efikasitet të kërkimit. Windows shërbimi është komponenta e cila ka për qëllim menaxhimin e procesit të web crawling dhe indeksimit. Ky shërbim funksionalitetin e vetë e realizon duke komunikuar me REST ueb shërbimin të implementuar në ueb server. Qëllimi i windows shërbimit është dërgimi i komandave për kryerjen e punëve të caktuara si p.sh. aktivizimin e web crawler-ëve ose leximin dhe vendosjen e shënimeve në bazën e të dhënave. Kjo komponentë është zhvilluar për shkak se komponenta e ueb serverit është entitet pasiv dhe nuk mund të ekzekutoj komanda pa pasur kërkesa (web requests). Parimi i punës ndërmjet këtyre dy komponentëve është “Master-Slave” ku mjeshtër është windows shërbimi. Arsyeja se pse kjo komponentë nuk është një aplikacion por është implementuar si windows shërbim është sepse shërbimet në sistemin operativ Windows mund të aktivizohen gjithmonë me ngritjen (boot) e sistemit dhe mund të jenë të pavarura nga shfrytëzuesi aktual në sistem operativ. Në këtë windows shërbim është implementuar një orar i cili pret kohën e paraparë ku nuk kemi shumë shfrytëzues aktiv të sistemit për të filluar proceset që marrin mjaftë kohë dhe shkaktojnë ngarkesë të madhe në sistem.

Page 18: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 12

Në vazhdim gjeni modelin fizik të sistemin si dhe varshmëritë në mes komponentëve dhe varshmëritë me sistemet eksternale:

Figura 3-1 Modeli fizik i sistemit

3.1.2 Modeli logjik, entitetet dhe ndërveprimet Design pattern në të cilin është implementuar sistemi është MVC (Model View Controller) në të cilin është implementuar Service-Repository pattern. Qëllimi i modelit arkitektural MVC është modularizimi i të gjitha komponentëve. MVC përbëhet nga tri komponentë: modelit, pamjes, kontrollerit. Qëllimi i modelit është prezantimi i entiteteve të sistemit. Këtu ne i ndajmë dy modele: modelet e domenit dhe modelet e biznesit. Përmes modeleve të domenit ne prezantojmë entitetet nga baza e të dhënave. Ndërsa në modelet e biznesit ne përfshijmë të gjitha

Page 19: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 13

klasat që përmbajnë funksionalitete të sistemit që ndërlidhen me logjikën e sistemit. Vërejte, këto klasa nuk paraqesin shtresën e logjikës së aplikacionit (application logic layer), por përdoren nga shtresa e logjikës së aplikacionit për të kryer detyra të caktuara, pra paraqesin shtresën ndihmëse (helper layer). Pamjet paraqesin ndërfaqet e shfrytëzuesit (user interfaces), pra shtresën e prezantimit. Këto klasa ndahen në dy grupe: Partial Views, dhe Views. Views paraqesin faqe në tërësi ku përmbajnë seksionin e header, footer dhe përmbajtën (content). Në anën tjetër Partial Views janë kode të HTML të cilat përmbajnë pjesë të vogla si për shembull kodi që gjeneron një kuti të produktit. Kontrollerët janë pjesa kryesore e MVC. Kjo komponentë qëndron në qendër të arkitekturës dhe implementon biznes logjikën e aplikacionit. Përmes kontrollerëve ne marrim kërkesën nga pamjet dhe pas ekzekutimit të funksionalitet kthejmë përgjigjen tek shfrytëzuesit.

Figura 3-2 MVC modeli arkitektural[5]

E meta e këtij modeli është sepse në kontroller kemi ngarkesë të tepërt, sepse menaxhohet marrja e të dhënave nga baza e shënimeve, manipulimi i tyre, ekzekutimi i funksionaliteteve tjera dhe në fund kthimi i pamjes tek shfrytëzuesi. Për këtë arsye ne shtojmë në këtë model edhe dy shtresa tjera: Services dhe Repository. Service-Repository pattern ka për qëllim të modularizimit të punëve të sistemit. Repository paraqesin Database Adapter modulin, pra sigurojnë transmetimin e të dhënave nga baza e shënimeve në ambientin e punës (working environment) dhe anasjelltas. Në anën tjetër Services përmbajnë pjesë të caktuara të biznes logjikës së aplikacionit. Këtë pjesë duhet të thirren në ambientin e punës i cili mund të jetë i pavarur (desktop, mobile, ueb etj) duke realizuar kështu funksionalitetit e tërë sistemit. Në rastin tonë këto shërbime thirren në kontroller, kështu duke larguar vendosjen e pjesëve të mëdha të kodit në kontroller.

Page 20: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 14

Në vijim gjendet design pattern i pjesës së ueb aplikacionit:

Figura 3-3 Modeli logjik i arkitekturës së ueb aplikacionit

Për dallim nga ueb aplikacioni, modeli arkitektural i windows shërbimit përmban vetëm modulin model të MVC pattern dhe modulin service të Service-Repository pattern. Këtu nuk nevojitet view pasi që nuk ka ndërfaqe të shfrytëzuesit për windows shërbimin, dhe nuk nevojitet repository pasi që shërbimi nuk ka bazë të të dhënave për ruajtjen e shënimeve. Komponentja controller është zëvendësuar nga klasa EShopService e cila paraqet kodin e windows shërbimit. Në vijim gjendet modeli logjik i arkitekturës së windows shërbimit.

Page 21: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 15

Figura 3-4 Modeli logjik i arkitekturës së windows shërbimit

3.1.3 Modeli i bazës së shënimeve Për dallim nga shumica e aplikacioneve ku baza e shënimeve përdoret vetëm për ruajtjen e informacionit në sistemit tonë ka edhe implementim të biznes logjikës së aplikacionit. Këtu çdo qasje në bazën e të dhënave bëhet përmes procedurave të cilat thirren nga repository që paraqet ndërfaqen nga aplikacioni. Përveç procedurave këtu kemi edhe disa orare (event schedule) që menaxhojnë datat e skadimit të artikujve, listimin e indekseve të skaduar që duhet të përdoren për web crawling, dhe kalkulimin e konstanteve të indekseve. Në diagramin në vijim gjeni modelin e entiteteve të bazës së shënimeve dhe relacionet ndërmjet tyre:

Figura 3-5 ER Modeli i bazës së shënimeve

Page 22: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 16

3.1.4 Përparësitë dhe të metat e arkitekturës së zgjedhur Përparësia kryesore e arkitekturës së sistemit është sepse përmes ndarjes së shtresave mirëmbajta dhe ndryshimi i pjesëve të caktuara të sistemit është më lehtë. Kështu p.sh. ndryshimet në një procedurë në bazën e shënimeve nuk ndikon në shtresën e shërbimeve, në disa raste as tek shtresa e repository. Gjithashtu përmes modularitetit të implementuar nga ana e shtresave mundësohet që më shumë se një zhvillues të marrë pjesë njëkohësisht në modifikim e sistemit. Përveç modularitetit arkitektura e shtresave zvogëlon edhe gjasat e gabimit në funksionalitetin e sistemit. Për shkak se sistemi është i varur nga web store të shumta pritet që të kemi ndryshim të vazhdueshëm sidomos në modulet e web crawling. E metë e kësaj arkitekture është sepse shtresat kanë ndikim të madh në performancën e sistemit. Kështu për një proces të thjeshtë si transportimi i një artikulli në bazën e të dhënave ne duhet të kalojmë nga shtresa e kontrollerit në shtresën e shërbimeve, më pas shtresën e repository deri sa të qasemi në bazën e shënimeve. Më pas kemi kthimin e të dhënës mbrapa deri te shtresa e pamjeve. Për zgjidhjen pjesërisht të këtij problemi në disa pjesë të sistemit kemi neglizhuar disa shtresa. Ndarja është bërë në dy lloje të komunikimit me sistem. Në rastin e parë gjatë kërkesave të windows shërbimit pasi që kemi procesin e indeksimit ne implementojmë të gjitha shtresat, ku përfshihen edhe konvertimet të entiteteve të bazës së shënimeve në modele të domenit. Përmes implementimit të të gjitha shtresave ne këtu sigurohemi që çdo proces nuk pëson gabime. Këtu pasi që klienti është makinë atëherë nuk luan rol shumë të rëndësishëm shpejtësia. Në këtë komunikim me rëndësi është lirimi i rregullt i memories së panevojshme sepse kemi numër shumë të madh të të dhënave që merren gjatë procesit të crawling dhe indeksimit. Në rastin e pranimit të kërkesave nga shfrytëzuesit kemi disa anashkalime nga modeli arkitektural logjik (design pattern) për shkak se këtu nevojitet procesimi më i shpejtë i kërkesave. Këtu neglizhohet tërësisht shtresa e modelit të domenit për shkak se konvertimet e të dhënave në objekte marrin kohë dhe objektet punojnë ngadal. Në këtë rast për strukturimin e të dhënave përdorim vargjet shumë dimensionale për shkak se kanë shpejtësi shumë më të madhe se objektet. Në bazë të eksperimenteve të realizuara koha e procesimit të kërkesës duke përdorur vargje në vend të objekteve është përafërsisht 1.5 herë më shpejtë për të dhëna të shumta.

3.2 Procesi i web crawling Procesi i web crawling tek E-Shop makina realizohet duke e trajtuar ueb faqen e shkarkuar si XML dokument. Në këtë rast për secilën web store është implementuar një web scraper specifik i cili përmes XPath gjen elementet fëmijë që paraqesin përmbajtën e artikujve. Më pas në këta elemente fëmijë shikohet për elementet specifike që paraqesin pjesët që na interesojnë në përmbajtjen e artikullit. Përveç trajtimit si XML dokument në disa raste kemi përdorimin e shprehjeve të rregullta për gjetjen e informatave specifike të

Page 23: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 17

artikullit për shkak se struktura e elementit na paraqet vështirësi të madhe për shkarkimin e informacioneve. Në vijim do të trajtojmë rastin se si realizohen proceset e crawling dhe scraping në Walmart web store. Struktura e përmbajtjes (container) e një artikulli në ueb faqen e Walmart është si në vijim:

Për realizimin e konvertimit të DOM elementit të mësipërm në artikull (marrjen e informatave të nënvizuara) ne kemi zhvilluar dy klasa. Njëra klasë është

<div class="js-tile js-tile-landscape tile-landscape"> <a class="js-product-image" href="/ip/Refurbished-...."> <img class="product-image" alt="" src="Foto"> </a> <div class="tile-content-wrapper"> <div class="tile-content"> <h4 class="tile-heading"> <a class="js-product-title" href="Url"> Titulli</a> </h4> <div class="tile-primary "> <div class="tile-row"> <div class="js-item-price-container

item-price-container"> <span class="price price-display"> <span class="sup">$</span>

257 <span class="currency-delimiter"> .</span> <span class="sup">00</span>

</span> <span class="price-auxblock"></span> <div class="price-savingblock"></div> </div> </div> <div>...</div> </div> <div class="tile-aside"> .... </div> </div> </div> </div>

Shembull 3-1 DOM elementi i një artikulli nga Walmart Web Store

Page 24: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 18

WalmartWebSpider qëllimi i së cilës është gjetja në HTML dokumentin e të gjitha elementeve që përmbajnë klasën “js-title js-title-landscape title-landscape” përmes XPath.

Shembull 3-2 Klasa WalmartWebSpider e cila realizon gjetjen e përmbajteve (container) të artikujve

nga HTML dokumenti Pas identifikimit të këtyre DOM nyjeve në listë, për secilin anëtarë ne marrim informacionin përkatës përmes klasës WalmartDomNode e cila duke përdorur shprehjet e rregullta dhe DOMNode klasën e PHP gjen elementet përkatëse.

class WalmartWebSpider extends WebSpiderBase { public function __construct() { $this->isSSL = true; $this->url = "https://www.walmart.com/search/"; } public function CrawlData($keywords, $page) { $dom = new WalmartDOMNode(); $doc = $dom->LoadHtmlDocument($this->url."?query=".urlencode($keywords)."&page=".urlencode($page), $this->isSSL); $xpath = new \DOMXPath($doc); $nodes = $xpath->query( '//div[@class="js-tile js-tile-landscape tile-landscape"]'); $items = array(); for ($i = 0; $i < $nodes->length; $i++) { $node = &$nodes->item($i); $item = $dom->ExtractNode($node); if($item != null) { $items[] = $item; } } return $items; } }

Page 25: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 19

Shembull 3-3 Klasa WalmartDOMNode qëllimi i së cilës është marrja e informatave specifike për

artikullin nga DOM elementi

class WalmartDOMNode extends DOMNodeBase { public function ExtractNode(&$node) { @$h4 = $node->getElementsByTagName('h4')->item(0); if(!isset($h4)){return null;} @$title = $h4->nodeValue; @$a = $h4->childNodes->item(1); if(!isset($a)){return null;} @$href = $a->attributes->getNamedItem('href')->nodeValue; @$nodeHtml = $node->nodeValue; if(!isset($nodeHtml)){return null;} if(@!preg_match($this->currencyRegEx, $nodeHtml, $matches)){return null;} @$price = $matches[0]; unset($matches); if(@!preg_match("/(src=\")(.+)(\">)/", $this->ConvertDOMNodeToHtml($node), $matches)) {return null;} else{@$img = $matches[2];} if(empty($img) || empty($title) || empty($price) || empty($href)) {return null;} $img = html_entity_decode($img); $img = substr($img,0,strrpos($img,'?')); $img = preg_replace('/\?odnHeight.+/','',$img); return [ 'Title' => trim($title), 'Image' => $img, 'Price' => $price, 'Link' => 'http://www.walmart.com'.$href, 'Reliability' => 0.7, 'Store' => 'Walmart', 'AmazonCategory' => null, 'EbayCountry' => null ]; } }

Page 26: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 20

Klasat e mësipërme merren vetëm me procesin e shkarkimit të një faqeje dhe nxjerrjen e informatave të artikujve. Këto klasë përdoren nga klasat përkatëse thread të cilat përdoren për procesim paralel gjatë crawling të listave të termave. Secila web store e ka një thread përkatës, dhe gjatë procesit të crawling aktivizohet nga një thread i veçantë. Thread që përdoren në sistem janë të tipit Posix dhe si të tillë përkrahen nga sistemet operative më të popullarizuara (Windows, Unix, OS X). Në shembullin e mëposhtëm është kodi i thread-it të Walmart, i cili në momentin e startimit të thread-it ekzekuton metodën run.

Shembull 3-4 Thread-i WalmartWorker i cili përdoret gjatë procesimit paralel në web crawling

Pra procesi i web crawling të një web store përbëhet nga klasa WebStoreWorker e cila starton një thread për crawling, klasa WebStoreWebSpider e cila shkarkon ueb faqen dhe nxjerrë prej sajë listën e DOM nyjeve që paraqesin artikujt, dhe klasa WebStoreDOMNode që shërben si scraper për nxjerrjen e fushave të nevojshme të artikullit.

Figura 3-6 Ndërveprimet ndërmjet klasave që realizojnë procesin e web crawling

class WalmartWorker extends \Thread { public $keyword, $page, $content; public function __construct($keyword, $page) { $this->keyword = $keyword; $this->page = $page; } public function run() { $this->ExecuteWorker(); } public function ExecuteWorker() { $spider = new WalmartWebSpider(); $this->content = $spider->CrawlData($this->keyword, $this->page); } }

Page 27: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 21

Zakonisht në procesin e web crawling aktivizohen 4 thread-a për 4 web store-ët përkatëse të cilat punojnë në mënyrë paralele dhe kështu shkurtohet koha e këtij procesi për 4 herë. Përparësi e kësaj strukture të procesit të crawling është sepse lehtë mund të zgjerohet në web store tjerë. Ajo që nevojitet për të shtuar një web store të ri është krijimi i një klase Worker (thread), një klase WebSpider e cila trashëgon klasën WebSpiderBase dhe një klase DOMNode e cila trashëgon DOMNodeBase.

Figura 3-7 Diagrami i aktiviteteve gjatë procesit të crawling

3.3 Procesi i indeksimit Siç është cekur edhe më herët procesi i indeksimit realizohet si bashkëpunim në mes të windows shërbimit dhe ueb aplikacionit në parimin e punës master-slave. Gjatë indeksimit ne bazohemi në dy grupe të termave:

1. Lista e termave të përkohshëm (TempTermList në bazën e shënimeve) e cila paraqet listën e kërkimeve të cilat nuk kanë ekzistuar në bazën e shënimeve

2. Lista e kërkimeve të fjalëve kyçe (KeywordSearchList në bazën e shënimeve) e cila paraqet listën e indekseve që kanë afat te skaduar dhe listën e fjalëve kyçe që nuk janë indeksuar më parë.

Artikujt e gjetur gjatë crawling për këto lista indeksohen duke e shtuar në fushën e fjalëve kyçe (keywords) të artikullit fjalën kyçe përkatëse, përkatësisht në bazën e shënimeve në tabelën ArticleKeywords shtohet çifti ArticleID, KeywordID. Arsyeja se pse vendosen ID numra natyral (integer) në vend të titullit të artikullit dhe përmbajtjes së fjalës kyçe është sepse krahasimi i numrave ndodh shumë më shpejtë se sa krahasimi i teksteve (strings).

Page 28: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 22

Figura 3-8 Grafi i indeksimit tek E-Shop sistemi

3.3.1 Rasti i ndërveprimit në mes të komponentëve gjatë indeksimit Procesi i indeksimit fillon me dërgimin e kërkesës për leximin e termave të përkohshëm në REST ueb shërbimin nga windows shërbimi. Më pas për secilin term nga lista e marrë dërgohen kërkesat në vijim:

1. Kërkesa për regjistrimin e fjalëve kyçe nga termi me ç’rast kthehen lista e ID-ve të fjalëve kyçe. Këto fjalë kyçe ruhen në një listë të përkohshme (keywords) në windows shërbim.

2. Për secilin term dërgohet kërkesa për crawling dhe regjistrim të artikujve të gjetur në bazën e shënimeve. Në këtë rast kthehet lista e ID të artikujve. Më pas në listën e përkohshme për indeksim (indexMaps) shtohen çiftet ArticleID, KeywordID.

Pas përfundimit të këtij veprimi lirohet memoria e panevojshme e ngarkuar gjatë procesit në windows shërbim duke detyruar GC (Garbage Collector) të liroj memorien. Në këtë rast përfundon puna me listën e termave të përkohshëm. Tash dërgohet kërkesa për marrjen e listës së kërkimeve të fjalëve kyçe. Pas marrjes së këtyre fjalëve kyçe dërgohet kërkesa për regjistrim në bazën e shënimeve të fjalëve kyçe që nuk ekzistojnë. Në këtë rast kthehet lista e ID-ve të të gjitha fjalëve kyçe të kësaj liste (KeywordsSearchList). Më pas për secilën fjalë kyçe dërgohet kërkesa për crawling dhe regjistrim të artikujve të

Page 29: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 23

gjetur sikurse tek rasti i termave të përkohshëm. Pas përfundimit të këtij procesi fitojmë listën e kompletuar për indeksim. Në fund dërgohet kërkesa për indeksim të artikujve nga koleksioni i indeksimit (indexMaps). Në vijim gjeni diagramin sekuencial i cili paraqet në mënyrë skematike të gjithë hapat e procesit të indeksimit.

Figura 3-9 Diagrami sekuencial i procesit të indeksimit

Page 30: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 24

Windows shërbimi e ruan historiatin e punës së vet (logs) gjithmonë në një file për të shikuar më vonë nëse ndodhë ndonjë gabim. Në këtë historiat ruhet koha e fillimit të punës së shërbimit, artikujt e gjetur dhe të gjitha gabimet e shkaktuara. Përveç si windows shërbim ky funksionalitet mund edhe të aktivizohet përmes qasjes me konzolë (console), në rastet kur dëshirojmë të veprojmë jashtë orarit automatik të shërbimit. Në vijim gjeni disa pamje të dërgimit të komandave përmes konzolës për procesin e indeksimit.

Figura 3-10 Shembull i komunikimit ndërmjet windows shërbimit dhe REST web shërbimit

Page 31: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 25

3.4 Procesi i kërkimit

3.4.1 Ndërfaqja e shfrytëzuesit Ndërfaqja e shfrytëzuesit është zhvilluar në modelin SPA (Single-Page App) ku çdo kërkesë realizohet përmes kërkesave asinkrone AJAX përmes URL të formatit {domain}/{term}/{page} me ç’rast ndryshohen vetëm disa pjesë të faqes. Në ditët e sotme shumica e aplikacioneve në ueb janë të zhvilluara në këtë model, qëllimi kryesor i së cilës është krijimi i ndjesisë së përdorimit të aplikacionit e jo ueb faqes klasike. Ky model i ndërfaqes është zgjedhur për dy arsye. Arsyeja e parë është për shkak se procesi i kërkimit dhe gjenerimit të përmbajtës së artikujve merr shumë kohe. Në këtë rast ne përmes loader-it i njoftojmë shfrytëzuesit se duhet të presin. Arsyeja tjetër është sepse përmes modelit SPA ne krijojmë iluzionin sikurse aplikacioni të ishte mobile aplikacion që është shumë më e përshtatshme për shfrytëzuesit (user-friendly). E metë e këtij modeli të ndërfaqes është menaxhimi i historisë ku në rastin e rifreskimit ose përdorimit të butonave para/pas humbet e gjithë përmbajta. Gjithashtu në bazë të këtij modeli ne kemi vetëm një hyrje në ueb site (one entry point). Këtë problem e kemi parandaluar duke implementuar menaxhimin e historiatit të shfletuesit përmes JS, ku në këtë rast për çfarëdo URL ne kemi hyrje në faqen përkatëse dhe ruajmë gjithmonë gjendjen e veprimeve në sajt.

Figura 3-11 Ndërfaqja e shfrytëzuesit të sistemit

Page 32: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 26

3.4.2 Parimet e punës Në sistem janë të implementuar dy forma të kërkimit: kërkimi bazik dhe ai i avancuar përmes filtrave të cilët përcaktohen nga klienti. Pas përcaktimit të llojit të kërkimit sistemi e ruan tipin në biskotë (cookie) për ta mbajtur mend për herët tjera. Në rast të qasjes për herë të parë në aplikacion në mënyrë automatike aktivizohet tipi i kërkimit bazik (default value).

Figura 3-12 Llojet e kërkimeve të mundësuara në sistem përmes filtrimeve

Në fillim dërgohet kërkesa në server përmes URL formatit të specifikuar më sipër. Kur vjen kërkesa në kontroller përcaktohet nëse duhet të kthehet përgjigja si pamje e pjesshme (partial view) apo si pamje e plotë (view). Më pas kalohet te procesimi i kërkesës. Në fillim termi ndahet në fjalë. Më pas shikohet se sa prej fjalëve ekzistojnë në bazën e të dhënave dhe regjistrohen fjalët që nuk ekzistojnë. Nëse gjendet të paktën një fjalë që nuk ekziston atëherë termi vendoset në listën e termave të përkohshëm në bazën e shënimeve (lista e termave përdoret gjatë procesit të indeksimit). Nëse numri i fjalëve të gjetura është më i madh se 60% atëherë konsiderohet se mund të gjinden në bazën e shënimeve artikuj të përafërt me termin e kërkimit, ku në këtë rast performohet algoritmi i rangimit Warehouse. Në rast se numri i fjalëve të gjetura është më i vogël se 60% atëherë supozohet se nuk mund të gjendet në bazën e shënimeve ndonjë artikull i përafërt. Në këtë rast ne përdorim besueshmërinë e makinave kërkuese të web store përkatëse dhe realizojmë drejtpërdrejt procesin e crawling të artikujve nga këta web store. Këta artikuj nuk ruhen në bazën e shënimeve për shkak se ky proces merr më shumë kohë dhe performanca e sistemit në këtë rast është kritike. Rangimi i këtyre artikujve bëhet duke u bazuar në koeficientet e besueshmërisë së web store.

Page 33: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Parimet e punës së E-Shop makinës kërkuese

Faqe 27

Këta koeficient janë si në vijim: 1. Amazon = 0.9 2. Walmart = 0.7 3. Ebay = 0.5 4. AliExpress = 0.4

Në fund ndahen rezultatet në faqet përkatëse (pagination) dhe kthehet rezultati i faqes së kërkuar. Si përfundim në vijim gjeni diagramin e aktiviteteve gjatë procesit të kërkimit:

Figura 3-13 Diagrami i aktiviteteve gjatë procesit të kërkimit

Page 34: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 28

4 Algoritmi i rangimit Warehouse Warehouse është një algoritëm i cili ka për qëllim përcaktimin e një koeficienti të rangimit për secilin grup të dhënash dhe më pas sortimin e këtyre grupeve të dhënash nga koeficienti më i madh në mënyrë zbritëse. Algoritmi është emërtuar si “Warehouse” për shkak se supozojmë se kemi kërkim në depo të të dhënave. Ideja e këtij algoritmi është trajtimi i një grupi të të dhënave që ndërlidhen mes veti si një nyje e cila ka veti (fusha, degë) të caktuara. Kështu për shembull nyje mund të jetë një ueb faqe dhe vetitë (properties) të sajë mund të jenë seksioni i header-it, seksioni i footer-it dhe seksioni i përmbajtjes (content). Rast tjetër për shembull kemi librin si nyje dhe vetitë e sajë mund të jenë ISBN, titulli, autori, data e botimit etj. Përmes këtij algoritmi ne përcaktojmë koeficientet e rangimit të secilës nyje dhe i sortojmë në mënyrë zvogëluese.

Figura 4-1 Prezantimi i objektit të librit si nyje me vetitë përkatëse në Warehouse algoritmin

Për përcaktimin e koeficienteve të rangimit ne në vetitë e nyjës aplikojmë filtra të caktuar. Rezultati i secilit filtër gjithmonë jep vlerë më të vogël ose barazi me 1. Në fund mblidhen rezultatet e këtyre filtrave dhe pjesëtohen me numrin total të filtrave të aplikuar për të përcaktuar koeficientin përfundimtarë i cili vlerën maksimale mund ta ketë 1.

Page 35: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 29

Figura 4-2 Skema e punës së algoritmit Warehouse

4.1 Filtrat e algoritmit Ekzistojnë dy lloje të filtrave të cilët aplikohen në vetitë e nyjës:

1. Filtrat lokal 2. Filtrat global

Filtrat lokal janë filtra të cilët aplikohen në veti të caktuara të nyjës, p.sh. aplikimi i përputhjes së fjalëve (word matching) në titullin e një libri. Ndërsa filtrat global janë rregulla që aplikohen në shumë veti të nyjës, p.sh. prioritizimi i seksioneve të një ueb faqeje. Në algoritëm ne kemi përcaktuar një grup filtrash të cilët përdoren në sistemin E-Shop. Mirëpo e mirë e algoritmit është se numri i filtrave që aplikohen mund të zgjerohet varësisht nga nevoja e aplikacionit dhe ky algoritëm mund të zbatohet në domene të ndryshme për zgjidhje të problemit. Formula e përgjithshme e algoritmit është si në vijim:

𝑊𝑊𝑃𝑃(𝑛𝑛) = 𝐺𝐺1 × 𝐹𝐹1 + 𝐺𝐺2 × 𝐹𝐹2 + ⋯+ 𝐺𝐺𝑛𝑛 × 𝐹𝐹𝑛𝑛 = �𝐺𝐺𝑖𝑖 × 𝐹𝐹𝑖𝑖

𝑛𝑛

𝑖𝑖=1

Formula 4-1 Formula për llogaritjen e koeficientit të algoritmit Warehouse për nyjen n

Page 36: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 30

Në formulën e mësipërme Gi paraqesin filtrat global kurse Fi paraqesin filtrat lokal. Në seksionet në vazhdim ne do të sqarojmë secilin filtër të përdorur dhe në fund do të tregojmë shembullin e zbatimit të këtij algoritmi në sistemin E-Shop.

4.1.1 WCR (Word Closeness Rule) Ky filtër hyn në grupin e filtrave lokal dhe ka për qëllim përcaktimin se sa afër janë fjalët në vetinë ku implementohet filtri. Në këtë filtër termi i kërkimit shkon rregullisht duke u ndarë në grupe më të vogla fjalësh deri sa të gjendet të paktën një përputhje e vlerën e nyjës , me ç’rast ndërpritet copëtimi i termit në pjesë më të vogla dhe llogaritet koeficienti. Në rast se nuk kemi përputhje të tekstin deri në momentin kur mbesin grupet me vetëm nga një fjalë atëherë vlera del 0. Vërejtje, kërkimi nuk është i varur nga lloji shkronjave (e madhe ose e vogël), pra nuk është case sensitive. Supozojmë se nyja ka tekstin “PHP and MySQL Web Development” dhe kemi termin e kërkimit “php and web development”. Në fillim shikohet nëse kemi përputhje të plotë. Nëse nuk kemi atëherë fillon ndarja e në dy grupe ku kemi gjithmonë zhvendosje për nga një fjalë në secilin grup. Grupet pas ndarjes do të jenë “php and web” dhe “and web development”. Pas kërkimit prapë nuk kemi rezultate të përputhjes dhe bëhet ndarja në grupe më të vogla përkatësisht në 3 grupe. Në këtë rast grupet do të jenë “php and”, “and web” dhe “web development”. Në këtë rast ne kemi 2 përputhje dhe përfundon procesi i ndarjes. Në rast se nuk do të kishim përputhje pasi që ndarja në nëngrupe do të krijonte grupe me nga një fjalë atëherë rezultati do të ishte zero. Në vijim gjeni paraqitjen e ndarjes së grupeve përmes skemës:

Figura 4-3 Ndarja në nëngrupe e termit gjatë aplikimit të filtrit WCR

Page 37: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 31

Pas gjetjes së përputhjeve aplikohet formula për llogaritjen e vlerës së këtij filtri që është si në vijim:

𝑊𝑊𝐶𝐶𝑃𝑃 = 𝐹𝐹 ×(𝑁𝑁 − 𝑖𝑖)𝑁𝑁 × 𝐶𝐶

Formula 4-2 Formula për llogaritjen e koeficientit të filtrit WCR

Në këtë rast F paraqet numrin e përputhjeve, N numrin e fjalëve në term, C numrin e fjalëve në veti dhe i numrin e grupeve të fjalëve – 1. Në rastin e mësipërm llogaritja do të jetë:

𝑊𝑊𝐶𝐶𝑃𝑃 = 𝐹𝐹 ×𝑁𝑁 − 𝑖𝑖𝑁𝑁 × 𝐶𝐶

= 2 ×4 − 24 × 5

=15

= 0.20 Definimi i përgjithshëm i këtij algoritmi është si në vijim:

Shembull 4-1 Algoritmi i filtrit WCR

4.1.2 KCR (Keyword Constant Rule) Ky filtër gjithashtu është i tipit lokal. Qëllimi i këtij filtri është përcaktimi se sa të vlefshme mund të konsiderohen fjalët (indekset) në një nyje. Kjo metodë është bazuar në

C = WordCount(property); N = WordCount(term); F = 0; i = 0; k = N; WCR = 0; wordGroups = term; while( k > 1) { F = CheckForMatches(property, wordGroups); if(F > 0) { WCR = F x (N – i) / (N x C); break; } else { k = k - 1; i = i + 1; wordGroups = SubgroupTerm(term, k); } }

Page 38: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 32

“term frequency” dhe “inverted document frequency” llogaritjen të përdorur në shumicën e makinave kërkuese[6]. Formula për llogaritjen e kësaj konstanteje është si në vijim:

𝐾𝐾𝐶𝐶 = 1 − 𝐹𝐹𝐶𝐶

Formula 4-3 Formula për llogaritjen e kostantes KC (Keyword Constant)

Në formulën e mësipërme F paraqet numrin e nyjeve që përmbajnë indeksin dhe C paraqet numrin total të nyjeve. Arsyeja se pse është përdorur diferenca nga numri 1 është për shkak se nëse një indeks gjendet në shumë nyje atëherë realisht ai nuk është shumë i rëndësishëm. Për shembull fjala “and” ekziston gati në çdo nyje. Në këtë rast kjo fjalë ka vlerë shumë të lartë por realisht nuk është fare e rëndësishme. Me rastin e kthimin të vlerës inverse përmes zbritjes nga numri 1 atëherë vlera e sajë është shumë e vogël dhe si e tillë nuk është indeks i rëndësishëm. Pas llogaritjes të secilës konstantë këto vlera mblidhen dhe pjesëtohen me numrin total të konstanteve, me ç’rast fitohet vlera e filtrit KCR. Pra formula për llogaritjen e KCR është si në vijim:

𝐾𝐾𝐶𝐶𝑃𝑃 =(𝐾𝐾1 × 𝐾𝐾𝐶𝐶1 + 𝐾𝐾2 × 𝐾𝐾𝐶𝐶2 + ⋯+ 𝐾𝐾𝑛𝑛 × 𝐾𝐾𝐶𝐶𝑛𝑛)

𝐶𝐶=

1𝐶𝐶

× �𝐾𝐾𝑖𝑖 × 𝐾𝐾𝐶𝐶𝑖𝑖

𝐶𝐶

𝑖𝑖=0

Formula 4-4 Formula për llogaritjen e filtrit KCR Në formulën e mësipërme K paraqet fjalën kyçe në termin e kërkimit, KC paraqet konstantën e fjalës kyçe dhe C paraqet numrin total të fjalëve kyçe në termin e kërkimit.

4.1.3 At least once rule Tipi i këtij filtri është filtër lokal. Qëllimi i këtij filtri është përjashtimi i nyjës nga koleksioni nëse nuk gjendet të paktën një përputhje. Zbatimi i këtij filtri gjen përdorim të madh sidomos gjatë përcaktimit të kërkimit të avancuar.

4.1.4 Property priority rule Kjo rregull bënë pjesë në grupin e filtrave global. Qëllimi i kësaj rregulle është përcaktimi i rëndësisë së një vetie të caktuar të nyjës. Shembull është ndarja e seksioneve të ueb faqes në tri pjesë ku pjesa e header-it ka p.sh. rëndësi 25%, pjesa e footer-it 5% dhe pjesa e përmbajtjes 70%.

Page 39: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 33

4.2 Përshtatja e Warehouse algoritmit për nevojat e E-Shop Në rastin e E-Shop si nyje konsiderohet artikulli dhe vetitë e tij përputhen me fushat e tabelës artikulli nga baza e shënimeve dhe relacioni i tij me fjalët kyçe.

Figura 4-4 Aplikimi i Warehouse algoritmit në nyjën artikulli

4.2.1 Aplikimi i filtrit WCR Aplikimi i kësaj rregulle bëhet në vetinë title për shkak se më lehtë krahasohet përmbajta e titullit me termin e kërkimit dhe sepse gjatësia e tekstit të kësaj vetie nuk është shumë e madhe.

4.2.2 Aplikimi i at least once rule Kjo rregull aplikohet te fusha keywords gjatë kërkimit për të eliminuar artikujt e panevojshëm. Kjo rregull lejon marrjen e maksimumit të 100 artikujve. Përveç aplikimit në fushën e keywords mund të aplikohet edhe në fushat e tjera varësisht nga përdorimi i kërkimit të avancuar.

4.2.3 Aplikimi i filtrit KCR Ky filtër aplikohet në fushën keywords të artikullit për shkak se neve na intereson rëndësia e indekseve se sa duhet të merren parasysh (rasti i fjalës “and”). Llogaritja e

Page 40: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 34

konstanteve të indekseve për këtë filtër bëhet direkt në bazën e shënimeve nga orari (schedule) përkatës. Arsyeja se pse nuk bëhet një llogaritje e tillë gjatë procesimit të algoritmit është sepse ka ndikim shumë negativ në shpejtësi, llogaritja e konstantëve për më shumë se 10000 artikuj merr shumë kohë.

Shembull 4-2 Procedura dhe orari që realizon kalkulimin e konstanteve në MySQL

4.2.4 Aplikimi i property priority rule Në rastin tonë shpërndarja e prioriteteve bëhet vetëm në fushën e keywords, title dhe reliability, ku shpërndarja realizohet si në vijim:

- Keywords – 50% - Title – 30% - Reliability – 20%

CREATE PROCEDURE spCalculateConstants() BEGIN DECLARE cols TEXT; DECLARE item BIGINT UNSIGNED; DECLARE i BIGINT UNSIGNED; DECLARE length BIGINT UNSIGNED; SELECT COUNT(ID) INTO length FROM Keyword; SET i = 1; SET cols = fnImplodeKeywords(); WHILE i <= length DO SET item = CAST(fnStringSplit(cols, ';', i) AS UNSIGNED); -- split item at position and cast as integer CALL spCalculateKeywordConstant(item); SET i = i + 1; END WHILE; END $$ CREATE EVENT schCalculateConstants ON SCHEDULE EVERY 1 DAY STARTS '2016-08-16 03:00:00' COMMENT 'Azhurnon konstantet e keywords' DO BEGIN CALL spCalculateConstants(); END $$

Page 41: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Algoritmi i rangimit Warehouse

Faqe 35

Formula përfundimtare e algoritmit për rastin e E-Shop është si në vijim:

𝑊𝑊𝑃𝑃(𝑛𝑛) = 𝑊𝑊𝐶𝐶𝑃𝑃(𝑇𝑇𝑖𝑖𝑇𝑇𝑇𝑇𝑇𝑇) × 0.30 + 𝐾𝐾𝐶𝐶𝑃𝑃(𝐾𝐾𝑇𝑇𝐾𝐾𝐾𝐾𝐾𝐾𝐾𝐾𝐾𝐾𝐾𝐾) × 0.50 + 𝑃𝑃𝑇𝑇𝑇𝑇𝑖𝑖𝑅𝑅𝑅𝑅𝑖𝑖𝑇𝑇𝑖𝑖𝑇𝑇𝐾𝐾 × 0.20 Formula 4-5 Formula e algoritmit Warehouse e aplikuar në E-Shop

4.2.5 Filtrat shtesë Përveç filtrave të lartë përmendur ekzistojnë edhe disa filtra shtesë që përdoren në algoritëm. Këta filtra përdoren vetëm në rastet e kërkimit të avancuar dhe ndahen në dy grupe: filtrat për çmim dhe filtrat për limitim të web store. Filtrat për web store mund të limitojnë numrin e web store për kërkim, kategorinë e Amazon dhe shtetin e Ebay. Filtrat për çmim mund të radhitin artikujt e gjetur në bazë të çmimit ose edhe mund të përcaktojnë kufi të çmimit të artikujve. I gjithë ky funksionalitet realizohet përmes një procedure në bazën e shënimeve e cila pranon argumentet e ndryshme për të ndërtuar një pyetësor variabil. Në vijim gjeni procedurën e cila e realizon këtë funksionalitet.

Shembull 4-3 Procedure e cila implementon të gjitha "at least once rule" filtrat

Edhe pas aplikimit të këtyre filtrave shtesë procesi i kalkulimit të WCR, KCR dhe property priority rule ndodh njësoj, nuk ka ndonjë ndryshim në këta koeficient.

CREATE PROCEDURE spAtLeastOnceMultipleRules (

_Keywords TEXT, _Price TEXT, _Limit TEXT ) BEGIN SET @sql =

CONCAT('SELECT a.*, COUNT(k.ID) AS KeywordCount, GROUP_CONCAT(k.Constant) AS Constants, 0 AS Rating ', 'FROM Keyword k INNER JOIN ArticleKeywords ak ON k.ID = ak.KeywordID INNER JOIN Article a ON a.ID=ak.ArticleID ', 'WHERE k.Keyword IN ', _Keywords,' ', _Limit,' ', _Price,' ', 'GROUP BY a.ID ', 'ORDER BY KeywordCount DESC, a.Reliability DESC LIMIT 100;');

PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END $$

Page 42: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Diskutime dhe konkluzione

Faqe 36

5 Diskutime dhe konkluzione Në këtë punim diplome jemi munduar të trajtojmë mënyrën e punës së makinave kërkuese dhe kemi zhvilluar një makinë për domenin e shitblerjes online. Në sistemin e zhvilluar jemi ballafaquar me probleme të ndryshme. Jemi munduar të zhvillojmë një arkitekturë e cila lehtë mund të ndryshohet dhe i përshtatet parimeve të punës së makinave kërkuese. Kështu sistemin e kemi ndarë në sisteme më të vogla të cilat bashkëveprojnë për të realizuar funksionalitetin e kërkuar. Në sistemit e zhvilluar kemi trajtuar 3 proceset kryesore të makinave kërkuese: web crawling, indeksimin dhe rangimin e artikujve gjatë kërkesa të shfrytëzuesve. Për secilin proces jemi munduar të zhvillojmë metoda origjinale të përshtatshme për domenin e sistemit duke u bazuar në rregullat e punës (work flow) të sistemeve ekzistuese, ku si sistem kryesorë jemi bazuar në makinat kërkuese të Google. Në këtë punim gjithashtu kemi zhvilluar një algoritëm specifik për rangimin e të dhënave në bazë të termave të kërkimit (algoritmi Warehouse). Ky algoritëm mund të aplikohet në çfarëdo domeni dhe mund të zgjerohet për nevojat specifike të sistemit. Ndër çështjet kryesore që nuk janë trajtuar në këtë punim janë shpërndarja e sistemit në shumë makina paralele dhe menaxhimi i shënimeve nëpërmjet shumë makinave që shërbejnë si baza të të dhënave. Problemet tjera që mund të trajtohen janë zhvillimi i filtrave të ri për algoritmin Warehouse, sidomos filtra që mund të aplikohen në shënime të mëdha pasi që filtrat e deritanishëm preferohet të aplikohen në veti që nuk kanë shënime të mëdha. Ide tjetër që mund të implementohet në sistemin aktual është integrimi rekomandimit në bazë të lokacionit gjeografik ku shfrytëzuesve i rekomandohen artikujt nga web store lokale. Këto çështje pritet të trajtohen në punimet e ardhshme shkencore, dhe inkurajohen lexuesit e këtij punimi që të ndërmarrin hapa drejt përparimit të sistemit aktual të zhvilluar.

Page 43: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Shtesat

Faqe 37

6 Shtesat

6.1 Lista e figurave Figura 2-1 Ueb direktoriumi vlib.org i cili është ende funksional ...................................... 3 Figura 2-2 Komponentët kryesore të makinave kërkuese dhe funksionalitetet e tyre[2] ... 4 Figura 2-3 Dallimi se si e sheh njeriu dhe Crawler-i ueb faqen[3] ..................................... 6 Figura 2-4 Visualizimi i indekseve të URL në bazën e të dhënave[2] ............................... 6 Figura 2-5 Visualizimi i indeksimit revers në bazën e shënimeve[2] ................................. 7 Figura 2-6 Gjendja fillestare e faqeve në PageRank algoritmin[2] .................................... 8 Figura 2-7 Rangimet përfundimtare të faqeve pas tri iteracioneve në PageRank[2] .......... 9 Figura 3-1 Modeli fizik i sistemit ..................................................................................... 12 Figura 3-2 MVC modeli arkitektural[5] ........................................................................... 13 Figura 3-3 Modeli logjik i arkitekturës së ueb aplikacionit .............................................. 14 Figura 3-4 Modeli logjik i arkitekturës së windows shërbimit ......................................... 15 Figura 3-5 ER Modeli i bazës së shënimeve ..................................................................... 15 Figura 3-6 Ndërveprimet ndërmjet klasave që realizojnë procesin e web crawling ......... 20 Figura 3-7 Diagrami i aktiviteteve gjatë procesit të crawling ........................................... 21 Figura 3-8 Grafi i indeksimit tek E-Shop sistemi ............................................................. 22 Figura 3-9 Diagrami sekuencial i procesit të indeksimit .................................................. 23 Figura 3-10 Shembull i komunikimit ndërmjet windows shërbimit dhe REST web shërbimit ........................................................................................................................... 24 Figura 3-11 Ndërfaqja e shfrytëzuesit të sistemit ............................................................. 25 Figura 3-12 Llojet e kërkimeve të mundësuara në sistem përmes filtrimeve ................... 26 Figura 3-13 Diagrami i aktiviteteve gjatë procesit të kërkimit ......................................... 27 Figura 4-1 Prezantimi i objektit të librit si nyje me vetitë përkatëse në Warehouse algoritmin .......................................................................................................................... 28 Figura 4-2 Skema e punës së algoritmit Warehouse ......................................................... 29 Figura 4-3 Ndarja në nëngrupe e termit gjatë aplikimit të filtrit WCR ............................ 30 Figura 4-4 Aplikimi i Warehouse algoritmit në nyjën artikulli ........................................ 33

Page 44: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Shtesat

Faqe 38

6.2 Lista e shembujve Shembull 2-1 Shembull i file robots.txt[2] ......................................................................... 5 Shembull 3-1 DOM elementi i një artikulli nga Walmart Web Store .............................. 17 Shembull 3-2 Klasa WalmartWebSpider e cila realizon gjetjen e përmbajteve (container) të artikujve nga HTML dokumenti ................................................................................... 18 Shembull 3-3 Klasa WalmartDOMNode qëllimi i së cilës është marrja e informatave specifike për artikullin nga DOM elementi ...................................................................... 19 Shembull 3-4 Thread-i WalmartWorker i cili përdoret gjatë procesimit paralel në web crawling ............................................................................................................................. 20 Shembull 4-1 Algoritmi i filtrit WCR ............................................................................... 31 Shembull 4-2 Procedura dhe orari që realizon kalkulimin e konstanteve në MySQL ...... 34 Shembull 4-3 Procedure e cila implementon të gjitha "at least once rule" filtrat ............. 35

Page 45: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Shtesat

Faqe 39

6.3 Lista e formulave Formula 2-1 Ekuacioni i thjeshtësuar i PageRank algoritmit[2] ........................................ 8 Formula 4-1 Formula për llogaritjen e koeficientit të algoritmit Warehouse për nyjen n 29 Formula 4-2 Formula për llogaritjen e koeficientit të filtrit WCR ................................... 31 Formula 4-3 Formula për llogaritjen e kostantes KC (Keyword Constant) ...................... 32 Formula 4-4 Formula për llogaritjen e filtrit KCR ........................................................... 32 Formula 4-5 Formula e algoritmit Warehouse e aplikuar në E-Shop ............................... 35

Page 46: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Shtesat

Faqe 40

6.4 Lista e shkurtesave E-Commerce Electronic Commerce E-Shop Electronic Commerce WWW World Wide Web HTTP Hypertext Transfer Protocol XML Extensible Markup Language DOM Document Object Model XQuery XML Query URL Uniform Resource Locator REST Representational State Transfer MVC Model View Controller GC Garbage Collector SPA Single Page Application JS Javascript ISBN International Standard Book Number WCR Word Closeness Rule KCR Keyword Constant Rule

Page 47: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Bibliografia

Faqe 41

7 Bibliografia

[1] George Coulouris, Jead dollimore, Tim Kindberg, Gordon Blair. Distributed Systems - Concepts and Design. 5th edition, 2016.

[2] Randy Connolly, Ricardo Hoar. Fundamentals of Web Development. Pages 881-893

[3] Moz (n.d.). Basics of Search Engine friendly design and development. Available at: https://moz.com/beginners-guide-to-seo/basics-of-search-engine-friendly-design-and-development [retrieved at 19.7.2016]

[4] W3Schools (n.d.). XSL. Available at: http://www.w3schools.com/xsl/ [retrieved at 22.7.2016]

[5] Ian Sommerville. Software Engineering. 9th edition, 2011 [6] Moz (n.d.). Search Engine algorithm basics. Available at:

https://moz.com/blog/search-engine-algorithm-basics [retrieved at 19.7.2016] [7] Moz (n.d.). How search engines operate. Available at:

https://moz.com/beginners-guide-to-seo/how-search-engines-operate [retrieved at 19.7.2016]

[8] SearchEngineWatch (n.d.). How search engines rank web pages. Available at: https://searchenginewatch.com/sew/news/2064539/how-search-engines-rank-web-pages [retrieved at 1.8.2016]

[9] Htmlbasictutor (n.d.). Search Engine Indexing. Available at: http://www.htmlbasictutor.ca/search-engine-indexing.htm [retrieved at 12.8.2016]

[10] SlideShare (n.d.). The Search Engine Index Presentation. Available at: http://www.slideshare.net/mcjenkins/the-search-engine-index-presentation [retrieved at 12.8.2016]

[11] Stanford University. The Anatomy of a Large-Scale Hypertextual Web Search Engine. Available at: http://infolab.stanford.edu/~backrub/google.html [retrieved at 20.7.2016]

[12] Sciencedaily (n.d.). Web Crawler. Available at: https://www.sciencedaily.com/terms/web_crawler.htm [retrieved at 20.7.2016]

[13] MSDN (n.d.). Introduction to Windows Service Applications. Available at: https://msdn.microsoft.com/en-us/library/d56de412(v=vs.110).aspx [retrieved at 18.8.2016]

[14] Corey Maynard. Creating a Restful API with PHP. Available at: http://coreymaynard.com/blog/creating-a-restful-api-with-php/ [retrieved at 3.8.2016]

[15] PHP manual. DOMDocument class. Available at: http://php.net/manual/en/class.domdocument.php [retrieved at 4.8.2016]

[16] PHP manual. DOMNode class. Available at: http://php.net/manual/en/class.domnode.php [retrieved at 4.8.2016]

[17] PHP manual. DOMNodeList class. Available at: http://php.net/manual/en/class.domnodelist.php [retrieved at 4.8.2016]

[18] PHP manual. DOMXPath class. Available at: http://php.net/manual/en/class.domxpath.php [retrieved at 4.8.2016]

Page 48: UNIVERSITETI I PRISHTINЁS - luleahmedi.uni-pr.edululeahmedi.uni-pr.edu/docs/thesis/Punim Diplome - Vigan Abdurrahmani.pdf · Në këtë punim dotë trajtohet zhvillimi i një sistemi

Bibliografia

Faqe 42

[19] StackOverflow (n.d.). Single Page Application advantages and disadvantages. Available at: http://stackoverflow.com/questions/21862054/single-page-application-advantages-and-disadvantages [retrieved at 12.8.2016]

[20] Mozilla Developer. XMLHttpRequest. Available at: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest [retrieved at 13.8.2016]

[21] Mozilla Developer. HTML5 History API. Available at: https://developer.mozilla.org/en-US/docs/Web/API/History_API [retrieved at 13.8.2016]

[22] CSS Tricks (n.d.). Using the HTML5 History API. Available at: https://css-tricks.com/using-the-html5-history-api/ [retrieved at 13.8.2016]

[23] Apache org. Apache Core Features. Available at: http://httpd.apache.org/docs/2.2/mod/core.html [retrieved at 15.8.2016]

[24] HayaGeek (n.d.). PHP CURL Post and Get Examples. Available at: http://hayageek.com/php-curl-post-get/ [retrieved at 26.8.2016]

[25] StackOverflow (n.d.). Concatenate multiple MySQL rows into one field. Available at: http://stackoverflow.com/questions/276927/can-i-concatenate-multiple-mysql-rows-into-one-field [retrieved at 28.8.2016]

[26] Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. 3rd edition, 2004

[27] Abraham Silberschatz. Operating System Concepts. 9th edition, 2012