• Përshëndetje Vizitor!

    Nëse ju shfaqet ky mesazh do të thotë se ju nuk jeni regjistruar akoma. Edhe pse nuk jeni regjistruar ju arrini të shihni pjesën me të madhe të seksioneve dhe diskutimeve të forumit, por akoma nuk gëzoni të drejten për të marrë pjesë në to dhe në avantazhet e të qënurit anëtar i këtij komuniteti. Ju lutem : REGJISTROHUNI që të dërgoni postime dhe mesazhe në Forum-Al.

    Regjistrohu !

Motor Kërkimi me PHP dhe MySQL (Full Text Search)

Forum-Al

Aty ku shqiptarët mblidhen
Anëtar
Jan 5, 2010
Postime
560
Pikët
28
Vendndodhja
Forum

Si mund ta kuptoni shumë mirë nga titulli, në këtë guidë do ju tregoj si të ndërtoni një motor kërkimi për faqen tuaj duke përdorur PHP dhe MySQL. Që mos ta kuptoni keq pa filluar, po flas për një motor kërkimi që kërkon në databazën e faqes tuaj, jo online si Google. Ideja e realizimit të kësaj guide më erdhi nga një kërkesë e dikujt në forum dhe duke menduar se mund ti interesojë shumë të tjerëve, ja ku jemi


Çfarë është dhe çfarë bën ky motor kërkimi?

Fusha e kërkimit, renditjes së rezultateve dhe paraqitjes së tyre në një formë të lexueshme dhe informative është mjaft komplekse, për të thënë minimumin. Të jem i sinqert, motori që kam realizuar për këtë guidë është relativisht i mirë, por s’është në asnjë sektor të tij as afër perfektes. Kjo kuptohet sepse po flasim për një kod të shkruar brenda pak ditëve në kohën e lirë, për të cilin s’kam bërë kërkime të thelluara dhe s’kam punësuar një ekip të tërë. Prandaj mos e merrni si referencë absolute asnjë nga kodet që do ju tregoj më pas dhe nëse mendoni ta përdorni për një mjedis real, kini parasysh që çdo gjë në të mund të përmirësohet. Qëllimi i kësaj guide është t’ju tregoj si ndërtohet skeleti i një motori kërkimi, i cili mund të zgjerohet lehtësisht më pas.

Po ju them që është relativisht i mirë për arsyet më poshtë:

  • Përdor Full Text Search, një teknikë kërkimi e implementuar në MySQL.
  • I rendit rezultatet në bazë të rezultatit që MySQL kthen.
  • Përdor operatorë Boolean për kërkime më specifike.
  • Ofron një fjalor shumë të vogël (i cili mund të zgjerohet) për të sygjeruar fjalë të gabuara.
  • I “ndriçon” (i bën bold) fjalët e gjetura nga kërkimi në tituj dhe përmbajtje.
Ato që ofron janë baza e një motori kërkimi dhe nga testet e mia, funksionojnë mirë. Megjithatë, mund të shtohen shumë gjëra për ta bërë akoma më spektakolar. Disa ide:

  • Mund të përmirësohet renditja duke krijuar një algoritëm personal.
  • Fjalori mund të zgjerohet duke përfshirë shumë më tepër fjalë. Futja e të gjithë fjalorit të gjuhës Shqipe do ishte çmenduri, por mund të shtohen fjalët më të kërkuara ose terma specifike për faqen.
  • Fjalori ruhet në një vektor, por jam i sigurt që ka zgjidhje me efikase për një fjalor me dhjetëra mijëra fjalë.
  • Algoritmi i sygjerimit ka vend për përmirësim.
  • Mund ti shtohet sygjerim kërkimi në kohë reale. Ka të tillë të gatshëm të shkruajtur në Javascript.
Për ta mbyllur intron, do ndërtojmë një motor që ka disa opsione interesante e që me siguri do i shërbejnë programuesëve që nuk e kanë prekur këtë fushë. Do i shërbejë patjetër edhe atyre që duan një motor kërkimi të thjeshtë për faqen e tyre, të cilët mund ta implementojnë fare lehtë. Le t’i bëjmë duart pis me kod tani, sepse fjalët vështirë se i shërbejnë dikujt


Krijimi i databazës

Ndoshta ndryshe nga çfarë imagjinoni, kodi për të ndërtuar këtë motor nuk është as i gjatë e as tepër i komplikuar. Do shini në vijim që do përdor vetëm një query, disa vektorë dhe manipulim i çmendur (sepse është në përgjithësi) tekstesh. Asgjë super-fantastike që kërkon 1000 rreshta kod. Por si fillim na duhet të ndërtojmë databazën. Krijoni një databazë të re që përmban këto fusha:

id – int(11)
titulli – tinytext
permbajtja – text


E mira është ta mbushni databazën me informacione, përkundrazi do kërkojmë në boshllëk. Ose bëni copy-paste disa artikuj, ose përdorni databazën e atashuar me skedarët e guidës (në fillim të artikullit; butoni “Shkarko Kodin”). Ju këshilloj të merrni databazën e atashuar sepse fjalori i sygjerimeve (prej 11 fjalësh) është “optimizuar” për të.

Hapi tjetër është të krijoni indekset FULL TEXT në databazën e sapo krijuar. Vetëm duke i krijuar këto indekse do i tregoni MySQL se fushat në fjalë duhet janë të kërkueshme, pëndryshe query që do krijojmë më pas do dështojë. Keni 2 mundësi për krijimin e këtyre indekseve të mallkuar:

1) Duke përdorur një query si më poshtë:

ALTER TABLE artikujt ADD FULLTEXT(titulli, permbajtja);

Problemi i vetëm është se duhet të keni privilegjet e duhura për të kryer këtë query, gjë që kam përshtypjen se hostet shared nuk e lejojnë (më korrigjoni nëse jam gabim). Sidoqoftë provojeni dhe shkurtojini vetes punë, sepse metoda e dytë është pak më e gjatë.

2) Duke përdorur PHPMyAdmin. Për fat të keq krijimi i indekseve duket i lehtë në pamje të parë, sepse ofrohet një buton i dedikuar direkt në krah të kolonave, por nuk është nëse po krijoni më shumë se 1 indeks. Shikoni foton e mëposhtme që ju tregon hapat e duhura.

Shtimi i Indeksit FULLTEXT në PHPMyAdmin - Hapi 1


Shtimi i Indeksit FULLTEXT në PHPMyAdmin - Hapi 2


Shpresoj mos t’ju dalin probleme në këtë fazë, por besoj se fotot që ju dhashë ja u lehtësojnë punën. Me të krijuar edhe indekset, po fillojmë të shkruajm kodin.

Të shkruajmë kodin

Fillon edhe pjesa e vështirë e guidës, prandaj dua vëmendjen tuaj. Do mundohem t’ju shpjegoj çdo rresht një për një që mos t’ju shpëtojë asgjë pa kuptuar, por nëse e keni mendjen tek filmi i bukur që po jepet në TV, sigurisht që s’do kuptoni gjë. Vëmendje!


Gjëja e parë është kodi HTML, një formë e thjeshtë më një input dhe një buton.
 
Top