Introweb - o introducere în dezvoltarea web

Pentru a efectua o căutare, trebuie să specificăm o condiție care, dacă este executată sau nu, căutarea va fi considerată ca fiind reușită sau nu, respectiv. În ciuda faptului că orice căutare - caută starea, aș individualizeze trei tipuri specifice de căutare text complet (poziție), cererea de căutare (eșantion) de căutare incrementală (poziție). Specificația este dată în paranteze, astfel încât să puteți înțelege ce este în joc, deoarece există întotdeauna posibilitatea de emulare software a unuia sau a altui efect vizual la căutare.

Căutarea în întregul text este cel mai simplu tip de căutare, în care se efectuează căutarea informațiilor în întregul volum de date - pe întregul volum de text sau pe toate câmpurile bazei de date. Și acesta este avantajul său principal. Nu trebuie să știm cum și unde sunt stocate informațiile, ci doar căutăm. Un exemplu este căutarea unor șiruri dintr-un document Word. Un dezavantaj semnificativ al acestei căutări constă în scăderea vitezei de căutare cu o creștere a cantității de date. Acest lucru face imposibilă utilizarea unui astfel de mecanism pentru a căuta informații într-o structură de date suficient de mare. Imaginați-vă, de exemplu, un document de text Word cu 10 mii de pagini, unde șirul de căutare este, de exemplu, în ultima pagină. Motorul de căutare va scana în mod consecvent întregul text, de la o pagină la alta, până când va găsi șirul solicitat. E nevoie de mult timp. Și imaginați-vă că există miliarde de astfel de pagini! De aceea, căutarea pe întregul text pe Internet este imposibil! Cu toate acestea, pe site, o astfel de căutare poate fi implementată mai mult sau mai puțin cu succes.

Căutați cu o interogare - în cadrul acestui tip de căutare vom înțelege căutarea de informații în baza de date. Acest tip de căutare este cel mai universal, deoarece cu ajutorul acestuia puteți căuta informații în baze de date uriașe. Un bun exemplu este căutarea informațiilor în motoarele de căutare sau în bunurile din magazinul online, de exemplu, după nume, cod, preț etc.

Căutarea incrementală. Sincer, nu știu definiția exactă a tipului de căutare, dar ideea este ca percheziția să fie efectuată după fiecare apăsare de tastă, în care o modificare în bara de căutare - într-o scanare normală, vom introduce mai întâi un șir de căutare, apoi apăsați pe tasta „Enter“ sau butonul "Găsiți" pentru a porni motorul de căutare. Cu căutarea incrementală, butonul "Găsește" nu este necesar, deoarece căutarea începe imediat după apăsarea oricărei taste alfanumerice Del sau Backspace. Căutare incrementală - căutare rapidă cu rafinament treptat.

Există două criterii pentru găsirea informațiilor - prin potrivirea exactă sau arbitrară a șirului de interogare. Implementarea unei căutări pentru o potrivire exactă pentru un șir de interogări înseamnă că vor fi găsite numai acele intrări care conțin exact șirul de interogare dat. Căutarea unui meci arbitrar va duce la căutarea de înregistrări care conțin cu precizie toate fragmentele șirului de interogare.

Să luăm următoarele exemple:

Aparat pentru balotare
Aparatură pentru demonstrarea presiunii atmosferice
Dispozitiv pentru studierea dependenței rezistenței unui conductor la temperatură
Dispozitiv pentru demonstrarea tipurilor de deformare

Este important să rețineți că vizitatorul poate introduce atât cuvântul întreg, cât și fragmentul acestuia, de exemplu, "Magnetofonul" este un cuvânt, iar "Magnitof" este un fragment. Prin urmare, vizitatorul, în general, face un șir de interogare nu din cuvinte, ci din unul sau mai multe fragmente, deși în majoritatea cazurilor el introduce cuvinte!

De asemenea, presupuneți că căutarea este insuficientă pentru majuscule.

Căutați după solicitare

Căutați potrivirea exactă a barei de căutare

Un vizitator poate introduce atât un singur fragment, cât și câteva fragmente. Dacă intră în fragmentul "Instrument", rezultatele interogării vor afișa intrările:

Aparatură pentru demonstrarea presiunii atmosferice
Dispozitiv pentru studierea dependenței rezistenței unui conductor la temperatură
Dispozitiv pentru demonstrarea tipurilor de deformare

deoarece fragmentul "Dispozitiv" este exact inclus în aceste nume. Dacă caută un șir de "tipuri de deformări" constând din două fragmente, se va găsi o înregistrare:

Dispozitiv pentru demonstrarea tipurilor de deformări

Dacă vizitatorul intră în linia "Dispozitiv de deformare", nu va fi găsită nicio înregistrare, deoarece o astfel de secvență de fragmente nu are o singură intrare în titlu.

Concluzie. Pentru a căuta cu succes o potrivire exactă, este necesar ca toate fragmentele interogării:

  1. Participat la înregistrare
  2. Acestea au fost amplasate în ele relativ unele de altele, deoarece acestea sunt setate în bara de căutare.

Am oarecum complicat formularea, astfel încât să puteți simți dificultățile întâmpinate de vizitator atunci când căutați o potrivire exactă. Trebuie să-și amintească nu doar fragmente ale numelui căutării, ci și să le plaseze corect în bara de căutare! Pot spune că este foarte dificil de făcut chiar și atunci când vizitatorul are o idee clară despre nume, dar imaginați-vă că nu are o astfel de idee! Cred că în 95-99% din cazuri, vizitatorul neinformat nu va găsi informațiile dacă intră în mai mult de un fragment pentru căutare. Aici se află paradoxul de căutare la o potrivire exactă - un utilizator introduce fragmente suplimentare în caseta de căutare, în speranța de a obține un rezultat mai precis, dar nu pot găsi nimic! Cu toate acestea, prin specificarea unui fragment pentru a căuta, acesta poate primi o cantitate mare de informații inutile (în cazul unui eșantion). Desigur, este recomandabil să caute o piesă unică în numele produsului, dar vizitatorul acest lucru nu va mai gândi, și doar se duce la un alt site.

Când am întâlnit o astfel de căutare pe site-ul concurentului, la început nu am putut înțelege de ce nu am putut găsi produsul, deși știu exact numele său înainte de virgule. Sa dovedit totul simplu, în loc de "set" în numele bunurilor folosite cuvântul "kit" sau "dispozitiv", etc. Ie Căutarea nu a funcționat deja la introducerea a două fragmente! Dacă doriți să funcționeze căutarea pe site-ul dvs., NU utilizați NICIODATĂ motorul de căutare pentru o potrivire exactă!

Căutați corespondență arbitrară cu fragmente ale șirului de căutare

Aici este necesar să se îndeplinească o singură condiție - toate fragmentele șirului de interogare trebuie să fie conținute în înregistrările necesare. Vă rugăm să rețineți - secvența lor nu trebuie să conteze, deoarece trebuie să îi permiteți vizitatorului să găsească o înregistrare:

Dispozitivul pentru demonstrarea tipurilor de deformare,

specificând șirul de interogare ca "Dispozitiv de deformare" sau "Demonstrator de dispozitiv de deformare" sau "Afișați deformarea dispozitivului dem". O astfel de interogare numesc arbitrar - nu contează cât de multe fragmente și în ce ordine sunt specificate în bara de căutare. Rețineți că, odată cu creșterea numărului de fragmente, informațiile sunt perfecționate prin reducerea simultană a datelor inutile în rezultatele căutării (în cazul eșantionării)! Și acesta este exact ceea ce vizitatorul așteaptă - își petrece timp pentru a introduce fragmente suplimentare pentru a clarifica interogarea și primește rezultate actualizate!

Căutarea incrementală

Căutarea incrementală - căutați informații după fiecare schimbare a șirului de interogare asociat cu apăsările de la tastatură. În căutarea normală, vizitatorul introduce mai întâi șirul de interogare în câmpul de căutare, apoi apasă tasta "Enter" sau face clic pe butonul "Find" pentru a începe căutarea. În cazul căutării incrementale, aceasta se realizează după fiecare intrare de caractere din șirul de căutare, adică vizitatorul a introdus primul caracter din bara de căutare - a fost efectuată o căutare, a intrat în cel de-al doilea caracter - căutarea etc. Căutarea incrementală este o căutare în timp real, deci nu este atât de ușor de implementat folosind tehnologii web, deoarece căutarea incrementală ar trebui efectuată fără reîncărcarea paginilor! Acesta este un mecanism foarte convenabil, dar are și un dezavantaj - poziționarea nu permite utilizatorilor să compare și să selecteze! Prin urmare, mulți preferă Yandex.ru, nu Google.ru, în care este implementat.

căutarea incrementală - o căutare pentru rafinamentul treptată - mai mulți vizitatori vor introduce caractere sau fragmente care caracterizează a informațiilor necesare „exactă“ căutarea este efectuată. Ați putea fi confundat de formularea "mai precisă", deoarece rezultatul informațiilor de căutare este găsit sau nu a fost găsit. Aceasta este principala caracteristică a căutării incrementale - aproximarea treptată a înregistrării necesare în cazul cartografierii lor ordonate.

Căutarea incompletă este destul de specifică și nu poate fi utilizată peste tot. Aceasta este o căutare secvențială, adică un vizitator poate căuta doar o singură înregistrare - în primul rând, o înregistrare, apoi o altă înregistrare etc. este căutată. Cred că pentru a căuta documente pe site, această căutare în forma ei pură nu va face. Cea mai eficientă căutare incrementală este de a găsi înregistrări în baza de date, de exemplu prin cod sau după numele produsului. Secvența acțiunilor va fi următoarea:

  1. Introducerea unui caracter
  2. căutare
  3. Afișarea rezultatelor, etc.

Deci, în cazul în care vizitatorul trebuie să introducă 10 caractere pentru a găsi înregistrarea, atunci vor fi 9 operații intermediare (inutile) de căutare-afișarea rezultatelor intermediare! Dar, cu căutarea obișnuită cu interogarea, secvența este mult mai scurtă:

  1. Introducerea șirului de căutare
  2. Căutați, când faceți clic pe butonul "Găsiți"
  3. Afișați rezultatele

Dacă se efectuează căutări incrementale pe computerul utilizatorului, afișarea rezultatelor intermediare nu este critică. Dacă vom încerca să-l pună în aplicare pentru a căuta mărfuri în serverele de date bazate pe web, acesta nu va funcționa, deoarece rezultatele vor fi afișate cu o întârziere după fiecare vizitator apăsare de tastă (are nevoie de timp pentru a transmite informațiile de căutare, iar browser-ul este display-uri foarte lent date)! Cu alte cuvinte, va exista un transfer fără sens al datelor inutile vizitatorului. Pot spune că întârzierea este de 0,5 sec. După apăsarea butonului deja apare disconfort. Căutarea incrementală prin natura sa - căutare de clienți (căutare locală). care este efectuată pe computerul utilizatorului, ceea ce reprezintă o altă restricție în comparație cu o căutare convențională cu o interogare care poate funcționa atât local, cât și într-un mediu client-server.

Căutarea incrementală la începutul unei linii

Să ne uităm la un fel de căutare incrementală - o căutare la începutul unei linii care permite poziționarea rapidă într-o matrice de date. Să presupunem că avem o listă cu 1000 de nume ordonate în ordine alfabetică și trebuie să mergem la înregistrări începând cu litera "t". În cazul căutării incrementale, este suficient să apăsați o dată tasta "T". Aceasta înseamnă că o căutare incrementală la începutul unei linii vă permite să sarăți repede la o înregistrare a cărei început este complet sau "parțial corespunde" șirului de căutare introdus în acel moment, ceea ce nu se poate face cu o căutare convențională. Ce înseamnă "parțial meci"? Să presupunem că avem 3 înregistrări și este selectată prima înregistrare:

aspirator
Dispozitivul 1
Dispozitivul 2
Dispozitivul 3

În linia de căutare goală introduceți litera "P" - va exista o tranziție la a doua înregistrare, deoarece începe cu litera "P". Ce se întâmplă dacă introducem litera "p"? Vom păstra înregistrarea 2, deoarece fragmentul "Pr" din linia de intrare corespunde cu începutul titlului celui de-al doilea registru "Examen 1". Ce se întâmplă dacă introducem acum litera "a"? Din fragmentul "Pra", nu începe o înregistrare în exemplul nostru. Aici totul va depinde de implementare. În 1C, de exemplu, se aude un bip și utilizatorul nu poate introduce un simbol. Și în Google puteți continua să introduceți în siguranță tastarea.

Căutarea incrementală la începutul unei linii este deosebit de eficientă atunci când mărfurile sunt comandate de grupuri de mărfuri, adică numele său începe cu numele grupului de mărfuri, de exemplu, "dispozitiv", "model", "poster", "hartă". Acest lucru este foarte convenabil atunci când este necesar să căutați mai multe produse dintr-un grup de mărfuri, de exemplu, "dispozitive".

Căutarea incrementală la începutul unei linii are o limitare mare - capacitatea de a poziționa rapid numai primele caractere din rândurile de înregistrări. Pentru a elimina această limitare, este necesar să combinăm ideea căutării incrementale cu posibilitățile căutării arbitrare cu o interogare, ca urmare a căror utilizator poate efectua o căutare incrementală indiferent de numărul și locația fragmentelor din șirul de interogare! Ca rezultat, obținem unul dintre cele mai eficiente mecanisme secvențiale de căutare!

Ați observat că până acum am analizat căutarea în termeni de programare Windows și am vorbit despre utilizatori? Acest lucru vă permite să rezumați din tehnologiile și limitările inerente mediului web și să vă concentrați pe luarea în considerare a algoritmilor eficienți de căutare. Dacă am început să analizăm aceste probleme din punctul de vedere al Webului, atunci în loc să rezolvăm problema dezvoltării unui sistem convenabil de căutare, suntem blocați în problemele de implementare a căutării pe site, ceea ce este demonstrat de numeroase resurse web pe care căutarea este realizată în mod clar. Se întâmplă adesea că găsirea unei soluții în anumite zone "în interiorul" este foarte dificilă. În astfel de cazuri, vă recomand să mergeți dincolo de aceasta și să vă întoarceți în zone care sunt părinți și, probabil, algoritmi au fost deja dezvoltați pentru a rezolva probleme similare. Deoarece programarea tradițională este părintele programării web, răspunsurile la problemele Web trebuie găsite în programare, unde s-au dezvoltat o mulțime de algoritmi diferiți. Aș spune - că pentru Web este o problemă, atunci pentru programare este doar o sarcină, și este cunoscută rezolvarea problemei mai ușoară decât încercarea de a face față problemei.