PINQ - Seturi de date interogate. Căutare fațetă. Găsirea căii corecte: modul în care navigarea fațetă afectează SEO (traducere)

Organizează așa-numita căutare fațetă (navigație fațetă) pe site. Semnificația acestuia este că rezultatele căutării pot fi rafinate folosind diverse caracteristici ale materialului - autor, tip, termen, data creării etc.

De exemplu, dacă aveți un magazin online de vânzare tehnologie electronică, iar utilizatorul introduce expresia în căutare casetofon. Pe pagina de rezultate, pe lângă rezultatele în sine, vor exista fațete:

- Capitol: echipament audio (54), tehnologia calculatoarelor (85)
- Marca: Apple (25), Samsung (68), iRiver (78)
- Disponibilitate in stoc: da (456), nu (12)
- Preț: 100-1000$ (45), 1000-10000$ (12)

etc. Numărul de produse (noduri) care îndeplinesc aceste caracteristici va fi indicat între paranteze. Făcând clic pe linkuri, utilizatorul va restrânge rezultatele căutării.


Pe de o parte, aceasta este o alternativă la filtrele extinse din Vizualizări, pe de altă parte, o alternativă la căutarea avansată standard.

Instalare

Secțiunea de fațete

În această secțiune, puteți specifica ce fațete să utilizați atunci când căutați. De exemplu, vă permiteți să selectați materiale în funcție de taxonomie, dată de adăugare sau autor. Numărul de fațete depinde de modulele incluse.

Secțiunea paginii cu rezultate

Stilul de afișare- stilul de afișare a rezultatelor căutării: Extraseînseamnă a afișa ca într-o căutare normală (text evidențiat, autor, dată); Teasers-uriînseamnă afișarea teasers-urilor de materiale folosind nodul corespunzător.tpl.php.

Utilizați stilul de afișare Extras în mod selectiv- Dacă opțiunea este bifată, atunci stilul Extrase va fi aplicat întotdeauna dacă este introdus un cuvânt cheie. Dacă nu bifați această opțiune, puteți utiliza modulul ca înlocuitor pentru navigarea în termenii taxonomiei.

Secțiunea de căutare curentă

Vă permite să activați blocul Căutare curentă , care afișează termenii de căutare:

În articolul de astăzi vă voi spune despre caracteristica Sphinx numită interogări multiple: optimizările sale încorporate, implementarea etc. căutare fațetă și, în general, cum o puteți folosi uneori pentru a efectua o căutare de trei ori mai rapid.

Dar mai întâi, 15 secunde de informații politice (nu te poți lăuda, nimeni nu te va lăuda). Anul acesta, Sphinx s-a calificat la categoriile SysAdmins și Enterprise (se spun că a ratat doar puțin la categoria Dezvoltatori). Votarea va continua încă o săptămână (până pe data de 20). Cu excepția muncitorului adrese de email, nu am nevoie de nimic. Mulțumim anticipat tuturor celor care nu ne vor lăsa să ne irosim!

Și înapoi la dezvoltare. Oricum, ce sunt cererile multiple și de unde vine viteza promisă de trei ori mai mare?

Interogări multiple este un mecanism care vă permite să trimiteți mai multe cereri de căutare într-un singur pachet.

Sunt apelate metode API care implementează mecanismul de cereri multiple AddQuery()Și RunQueries(). (Apropo, metoda „obișnuită” Query() le folosește intern: apelează o dată AddQuery() și apoi imediat RunQueries()). Metoda AddQuery() salvează starea curentă a tuturor setărilor de interogare stabilite de apelurile API anterioare și reține interogarea. Setările unei solicitări deja amintite nu se vor mai modifica, niciun apel API nu le va atinge, așa că pentru solicitările ulterioare puteți utiliza orice alte setări (alt mod de sortare, alte filtre etc.). Metoda RunQueries() trimite de fapt toate interogările stocate într-un singur lot și returnează mai multe rezultate. Nu sunt impuse restricții cu privire la solicitările care participă la pachet. Numărul de interogări, pentru orice eventualitate, este limitat de directiva max_batch_queries (adăugat în 0.9.10, fixat anterior la 32), dar aceasta este în general doar o verificare împotriva pachetelor rupte.

De ce să folosiți interogări multiple?În general, totul se reduce la performanță. În primul rând, trimițând cereri către searchd într-un singur pachet, economisim întotdeauna puțin resurse și timp, trimițând mai puține pachete de rețea înainte și înapoi. În al doilea rând, și mult mai important, searchd are ocazia de a efectua unele optimizări pe întregul lot de interogări. De-a lungul timpului, noi optimizări sunt adăugate treptat, așa că este logic să trimiteți cereri în loturi ori de câte ori este posibil - apoi, când actualizați Sphinx, optimizări ale loturilor pornește complet automat. În cazul în care nu pot fi aplicate optimizări de lot, cererile vor fi procesate pur și simplu pe rând, fără diferențe vizibile pentru aplicație.

De ce (mai precis, când) să NU folosiți interogări multiple? Toate interogările dintr-un lot ar trebui să fie independente, dar uneori nu este cazul, iar interogarea B poate depinde de rezultatele interogării A. De exemplu, este posibil să dorim să arătăm rezultatele căutării de la index suplimentar numai când nu s-a găsit nimic în indexul principal. Sau pur și simplu alegeți un offset diferit în al 2-lea set de rezultate, în funcție de numărul de meciuri din primul set. În astfel de cazuri va trebui să utilizați cereri individuale(sau pachete separate).

Există două optimizări ale loturilor importante despre care merită să știți: optimizarea anchete generale(disponibil începând cu versiunea 0.9.8) și optimizarea subarborilor obișnuiți (disponibil începând cu versiunea 0.9.10, care este în dezvoltare).

Optimizarea generală a interogărilor funcționează așa. searchd selectează din pachet toate solicitările pentru care diferă doar setările de sortare și grupare, dar partea de text integral, filtrele etc. sunt aceleași - și caută o singură dată. De exemplu, dacă există 3 interogări într-un pachet, partea de text a tuturor este „ipod nano”, dar prima interogare selectează cele mai ieftine 10 rezultate, a doua grupează rezultatele după ID-ul magazinului și sortează magazinele după evaluare, iar a treia interogare selectează pur și simplu prețul maxim, căutarea „ipod nano” » va funcționa o singură dată, dar din rezultatele sale vor fi construite 3 răspunsuri sortate și grupate diferit.

Așa-zisul căutarea fațetelor este un caz special pentru care este aplicabil această optimizare. De fapt, poate fi implementat prin rularea mai multor interogări de căutare cu setări diferite: unul pentru rezultatele principale ale căutării, mai multe cu aceeași interogare de căutare, dar setări diferite de grupare (top-3 autori, top-5 magazine etc.). Când totul, cu excepția sortării și grupării, este la fel, optimizarea este activată și viteza crește destul de bine (exemplul de mai jos).

Optimizarea subarborilor partajați lucru chiar mai interesant. Acesta permite searchd să exploateze asemănările între diferite interogări dintr-un lot. În interior toți cei care au venit sunt separați - diferiți! - interogările full-text identifică părți comune și, dacă există, rezultate intermediare calculele sunt stocate în cache și partajate între cereri. De exemplu, în acest pachet de 3 cereri

Barack Obama președintele barack obama john mccain discursul lui barack obama

Există o parte comună a 2 cuvinte („barack obama”), care poate fi calculată exact o dată pentru toate cele trei interogări și stocată în cache. Este exact ceea ce face optimizarea subarbore partajată. Dimensiunea maximă a memoriei cache per lot este strict limitată de directivele subtree_docs_cache și subtree_hits_cache, așa că dacă partea comună „eu sunt” este găsită în o sută de milioane de documente, serverul nu va rămâne brusc fără memorie.

Să revenim la optimizarea pentru interogările generale. Iată un exemplu de cod care rulează aceeași interogare, dar cu trei moduri diferite triere:
moduri de sortare:

Require("sphinxapi.php"); $cl = new SphinxClient(); $cl->SetMatchMode(SPH_MATCH_EXTENDED2); $cl->SetSortMode(SPH_SORT_RELEVANCE); $cl->AddQuery("the", "lj"); $cl->SetSortMode(SPH_SORT_EXTENDED, "desc publicat"); $cl->AddQuery("the", "lj"); $cl->SetSortMode(SPH_SORT_EXTENDED, „asc publicat”); $cl->AddQuery("the", "lj"); $res = $cl->RunQueries();

De unde știi dacă optimizarea a funcționat? Dacă a funcționat, în rândurile corespunzătoare ale jurnalului va apărea un câmp cu un „multiplicator”, care arată câte cereri au fost procesate împreună:

0,040 sec x3 0,040 sec x3 0,040 sec x3

Fiți atenți la „x3”, exact acesta este - înseamnă că solicitarea a fost optimizată și procesată ca parte a unui pachet de 3 solicitări (inclusiv aceasta). Pentru comparație, așa arată jurnalul, în care aceleași solicitări au fost trimise pe rând:

0,059 sec la 0,091 sec la 0,092 sec

Se poate observa că timpul de căutare pentru fiecare interogare în cazul unei interogări multiple s-a îmbunătățit de la 1,5 la 2,3 ori, în funcție de modul de sortare. De fapt, aceasta nu este limita. Pentru ambele optimizări, sunt cunoscute cazuri în care viteza s-a îmbunătățit de 3 sau mai multe ori - și nu în testele sintetice, ci destul de în producție. Optimizarea interogărilor generale se potrivește destul de bine cu căutările verticale pentru produse și magazine online, un cache de subarbori generali și, de asemenea, cu interogări de data mining; dar, desigur, aplicabilitatea nu se limitează strict la aceste domenii. De exemplu, puteți efectua o căutare fără text complet și puteți citi mai multe rapoarte diferite (cu diferite sortări, grupări etc.) folosind aceleași date într-o singură solicitare.

La ce alte optimizări ne putem aștepta în viitor? Depinde de tine. Până acum, planul pe termen lung include o optimizare clară pentru interogări identice cu seturi diferite de filtre. Cunoașteți un alt tipar comun care poate fi optimizat inteligent? Trimite-l!

Am aruncat o privire rapidă asupra instalării și sintaxei de bază a PINQ, un port al LINQ în PHP. În acest articol, vom analiza cum să folosiți PINQ pentru a simula caracteristica de căutare fațetă în MySQL.

În acest articol nu vom acoperi toate aspectele căutării fațetate. Persoanele interesate pot căuta informatii adecvateîn internet.

O căutare fațetă tipică funcționează astfel:

  • Utilizatorul introduce un cuvânt cheie sau mai multe cuvinte cheie pentru a căuta. De exemplu, „router” pentru a căuta produse în care cuvântul „router” apare în descriere, cuvinte cheie, numele categoriei, etichete etc.
  • Site-ul returnează o listă de produse care corespund acestor criterii.
  • Site-ul oferă mai multe link-uri pentru a vă personaliza termenii de căutare. De exemplu, vă poate permite să specificați anumiți producători de routere sau să setați o gamă de prețuri sau alte caracteristici.
  • Utilizatorul poate continua să specifice criterii suplimentare căutare pentru a obţine setul de date de interes.

Căutare cu fațete foarte popular și este Unealtă puternică, poate fi observat pe aproape orice site web legat de comerțul electronic.

Din păcate, căutarea fațetă nu este încorporată în MySQL. Deci, ce ar trebui să facem dacă încă folosim MySQL, dar vrem să oferim utilizatorului această oportunitate?

Cu PINQ, care are o abordare similară, puternică și simplă, putem obține același comportament ca și când am folosi alte motoare de baze de date.

Extinderea demo din prima parte

cometariu: Tot codul din această parte și din prima parte poate fi găsit în depozit.

În acest articol, vom extinde demonstrația din partea 1 cu o îmbunătățire semnificativă a căutării fațete.

Să începem cu index.php prin adăugarea următoarele rânduri:

$app->get("demo2", function () use ($app) ( global $demo; $test2 = nou pinqDemo\Demo($app); return $test2->test2($app, $demo->test1 ($app)); )); $app->get("demo2/facet/(key)/(value)", function ($key, $value) use ($app) ( global $demo; $test3 = new pinqDemo\Demo($app); returnează $test3->test3($app, $demo->test1($app), $cheie, $valoare); ));

Primul traseu ne duce la o pagină pentru a vedea toate postările care se potrivesc cu căutarea de cuvinte cheie. Pentru a păstra exemplul simplu, selectăm toate cărțile din tabelul book_book. De asemenea, va afișa setul de date rezultat și un set de link-uri pentru a specifica criteriile de căutare.

ÎN aplicații reale, după ce faceți clic pe astfel de link-uri, toate filtrele de fațete se vor ajusta la valorile limită ale setului de date rezultat. Astfel, utilizatorul va putea adăuga secvenţial noi condiţii de căutare, de exemplu, mai întâi selectează un producător, apoi specifică un interval de preţ etc.

Dar în acest exemplu nu vom implementa acest comportament - toate filtrele vor reflecta valorile limită ale setului de date original. Aceasta este prima limitare și primul candidat pentru îmbunătățire în demonstrația noastră.

După cum puteți vedea în codul de mai sus, funcțiile reale sunt localizate într-un alt fișier numit pinqDemo.php. Să aruncăm o privire la codul corespunzător care oferă funcția de căutare fațetă.

Clasa de aspect

Primul pas este crearea unei clase care să reprezinte un aspect. În general, un aspect ar trebui să conțină mai multe proprietăți:

  • Datele pe care operează ( $date)
  • Cheia prin care se realizează gruparea ( $key)
  • Tip cheie ($type). Poate fi una dintre următoarele:
    • specificați șirul complet pentru o potrivire exactă
    • indicați o parte a șirului (de obicei cea inițială) pentru a căuta după model
    • indicați un interval de valori, pentru grupare după interval
  • dacă tipul de cheie este un interval de valori, trebuie să definiți un pas de valoare pentru a determina limitele inferioare și superioare ale intervalului; sau dacă tipul face parte dintr-un șir, trebuie să specificați câte primele litere vor fi folosite pentru grupare ($range)

Gruparea- partea cea mai critică a aspectului. Toate informațiile agregate pe care un aspect le poate returna depind de criteriile de grupare. De obicei, cele mai utilizate criterii de căutare sunt „Șir complet”, „Parte din șir” sau „Interval de valori”.

Spațiul de nume classFacet ( utilizați Pinq\ITraversable, Pinq\Traversable; clasa Facet (public $date; // Setul original de date public $key; // câmp prin care se grupează public $type; // F: întreg rândul; S: șiruri de început ; R: interval; public $interval; // joacă un rol doar dacă $tip != F ... funcția publică getFacet() ( $filtru = ""; dacă ($this->type == "F") / / întreaga linie ( ... ) elseif ($this->type == "S") // începutul liniei ( ... ) elseif ($this->type == "R") // interval de valori ​​( $ filter = $this->data ->groupBy(function($row) ( return floor($row[$this->key] / $this->range) * $this->range; )) -> select(funcție (ITtraversable $date) ( return ["key" => $data->last()[$this->key], "count" => $data->count()]; )); ) return $filtru; ) ) )

Funcția principală a acestei clase este de a returna un set de date filtrat pe baza setului de date original și a proprietăților aspectului. Din cod se vede clar ca pt tipuri variate sunt folosite conturile diferite căi gruparea datelor. În codul de mai sus am arătat cum ar putea arăta codul dacă grupăm datele după un interval de valori în trepte specificate în $gamă.

Setarea aspectelor și afișarea datelor sursă

Funcție publică test2($app, $date) ( $fațetă = $this->getFacet($date); return $app["cremură"]->render("demo2.html.twig", array("fațetă" = > $fațetă, „date” => $date)); ) funcție privată getFacet($originalData) ( $facet = array(); $date = \Pinq\Traversable::from($originalData); // 3 exemple de creare diverse obiecte aspecte, și returnează aspecte $filter1 = new \classFacet\Facet($date, "autor", "F"); $filter2 = new \classFacet\Facet($date, „titlu”, „S”, 6); $filtru3 = new \classFacet\Facet($date, „preț”, „R”, 10); $fațetă[$filtru1->cheie] = $filtru1->getFacet(); $fațetă[$filtru2->cheie] = $filtru2->getFacet(); $fațetă[$filtru3->cheie] = $filtru3->getFacet(); returnează $fațetă; )

În metoda getFacet() facem următoarele:

  • Convertiți datele originale într-un obiect Pinq\Traversable pentru procesare ulterioară
  • Creăm trei aspecte. Aspectul „autor” va grupa după câmpul de autor și va implementa gruparea după întregul rând; aspect 'titlu' - după câmpul titlu cu grupare pe o parte a rândului (cu primele 6 caractere); aspectul „preț” - după câmpul preț cu grupare după interval (în trepte de 10)
  • În cele din urmă, extragem aspectele și le returnăm la funcția test2, astfel încât acestea să poată fi afișate în șablon pentru afișare

Aspecte de ieșire și date filtrate

În cele mai multe cazuri, filtrele vor fi afișate ca o linie și vă vor conduce la vizualizarea rezultatului filtrat.

Am creat deja o rută ("demo2/facet/(key)/(value)") pentru a afișa rezultate de căutare cu fațete și pentru a filtra link-uri.

Traseul are doi parametri, în funcție de cheia filtrată și de valoarea cheii respective. Funcția test3 care este legată de această rută este prezentată mai jos:

Funcție publică test3($app, $originalData, $key, $value) ($date = \Pinq\Traversable::from($originalData); $fațetă = $this->getFacet($date); $filter = nul; dacă ($cheie == „autor”) ( $filtru = $date ->unde(funcție($rând) folosește ($valoare) ( ​​return $rând[„autor”] == $valoare; )) ->orderByAscending( function($row) use ($key) ( return $row["preț"]; )) ; ) elseif ($key == "preț") ( ... ) else //$key== titlu ( .. . ) return $app["twig"]->render("demo2.html.twig", array("fațetă" => $fațetă, "date" => $filtru)); )

Practic, în funcție de cheie, aplicăm filtrarea (o funcție anonimă în instrucțiunea where) în funcție de valoarea transmisă și obținem următorul set de date filtrate. De asemenea, putem seta ordinea de filtrare a datelor.

În cele din urmă, afișăm datele brute (împreună cu filtre) în șablon. Această rută folosește același model pe care l-am folosit în „demo2”.

Bara de căutare

    (% pentru k, v în fațetă %)
  • ((k|majusculă))
    • (% pentru vv în v %)
    • ((v. număr))((v.cheie))
    • (%endfor%)
    (%endfor%)

Trebuie să ne amintim că aspectele generate de aplicația noastră sunt matrice imbricate. La primul nivel, aceasta este o serie de toate aspectele și, în cazul nostru, există trei dintre ele (pentru autor, titlu, respectiv preț).

Fiecare aspect are o matrice cheie-valoare, astfel încât să putem repeta peste el folosind metode normale.

Observați cum construim adresele URL pentru linkurile noastre. Folosim atât cheia buclă exterioară (k), cât și cheile buclei interioare (vv.key) ca parametri pentru rută ("demo2/facet/(key)/(value)"). Mărimea matricelor (vv.count) este utilizată pentru afișare în șablon.

Prima imagine arată setul de date original, iar a doua imagine este filtrată în funcție de intervalul de preț de la 0 USD la 10 USD și sortată după autor.

Grozav, am reușit să simulăm căutarea fațetă în aplicația noastră!

Înainte de a încheia acest articol, trebuie să aruncăm o privire finală asupra exemplului nostru și să stabilim ce poate fi îmbunătățit și ce limitări avem.

Posibile îmbunătățiri

În general, este foarte exemplu elementar. Tocmai am trecut prin sintaxă de bazăși concepte și le-a implementat ca exemplu de lucru. După cum sa menționat anterior, avem mai multe domenii care ar putea fi îmbunătățite pentru o mai mare flexibilitate.

Trebuie să implementăm criterii de căutare „suprapunere”, deoarece exemplul actual ne limitează la capacitatea de a aplica filtrarea căutării numai setului de date original; nu putem aplica căutarea fațetă unui rezultat deja filtrat. Aceasta este cea mai mare îmbunătățire pe care mi-o pot imagina.

Restricții

Căutarea de fațete implementată în acest articol are limitări serioase (care se pot aplica și altor implementări de căutare de fațete):

Preluăm date de la MySQL de fiecare dată

Această aplicație folosește cadrul Silex. Ca orice cadru cu punct de intrare unic, cum ar fi Silex, Symfony, Laravel, fișierul său index.php (sau app.php) este apelat de fiecare dată când o rută este analizată și sunt executate funcțiile controlerului.

Dacă vă uitați la codul din index.php nostru, veți observa că următoarea linie de cod:

$demo = nou pinqDemo\Demo($app);

este apelat de fiecare dată când pagina aplicației este redată, ceea ce înseamnă că următoarele linii de cod sunt executate de fiecare dată:

Demo clasă ( private $books = ""; funcția publică __construct($app) ( $sql = "selectați * din book_book order by id"; $this->books = $app["db"]->fetchAll($sql );)

Va fi mai bine dacă nu folosim un cadru? Ei bine, în ciuda faptului că dezvoltarea de aplicații fără cadre nu este o idee bună, pot spune că ne vom confrunta cu aceleași probleme: datele (și starea) nu sunt salvate între diferite solicitări HTTP. Aceasta este o caracteristică fundamentală a HTTP. Acest lucru poate fi evitat prin utilizarea mecanismelor de stocare în cache.

Am salvat mai multe interogări SQL utilizând aspecte. În loc să transmitem o interogare de selecție pentru a prelua datele și trei interogări grupate după clauzele corespunzătoare, am rulat doar una interogare unde și am folosit PINQ pentru a obține informațiile agregate.

Concluzie

În această parte, am implementat capacitatea de a căuta fațete într-o colecție de cărți. După cum am spus, acesta este doar un mic exemplu, care are loc de îmbunătățire și care are o serie de limitări.

Navigare fațetă - acesta este un tip de structurare a site-ului in care utilizatorii au posibilitatea de a specifica diferite fatete (parametri doriti) pentru a gasi produsul sau serviciul pe care il cauta.

Acest lucru permite vizitatorilor magazinului online să navigheze cu ușurință prin varietatea de produse sau servicii oferite, ajungând rapid la ceea ce caută. Numai în acest caz, fiecare utilizator caută pe propria cale.

Cel mai bun mod de a demonstra principiul navigației fațetate este cu un exemplu specific.

De exemplu, ai de gând să cumperi telefon mobilîn magazinul online. Doriți să găsiți un număr de telefon? un anumit model, culori, preturi, marci. Ar fi mai ușor și mai rapid să găsiți ceea ce aveți nevoie, restrângând căutarea folosind mai mulți sau toți parametrii (fațete).

O astfel de flexibilitate a structurii site-ului vă permite să creați cu ușurință pagini de destinație pentru cuvinte cheie individuale. Acest lucru poate părea destul de simplu pe hârtie. În practică, totul este mult mai complicat.

Să luăm în considerare principalele întrebări dificile.

1. De câte fațete sunt necesare pentru ca site-ul tău să fie bine indexat?

În mod ideal, „adâncimea” unei fațete nu ar trebui să depășească 100 de elemente. Acest lucru va permite roboților de căutare să indexeze toate paginile resursei. Majoritatea specialiștilor în promovarea site-urilor web tind să creadă că roboții de căutare pot recunoaște mai mult de 100 de link-uri pe o singură pagină.

Cel mai bine este să respectați următoarea opinie: Deoarece majoritatea site-urilor au oricum link-uri de navigare pe fiecare pagină, numărul de link-uri de produse pe fiecare pagină separată nu trebuie să depășească 100.

2. Fațete și filtre de căutare

S-ar putea să existe opțiuni pe site-ul dvs. pe care doriți să le oferiți vizitatorilor, dar care nu sunt atât de importante din perspectiva optimizării motoarelor de căutare. De exemplu, este foarte convenabil pentru vizitatori să selecteze produse după dimensiunea potrivită, și este posibil să nu fiți interesat de indexarea acestei anumite pagini de resurse. În acest caz, utilizați filtre cu folosind Java Creați scripturi și blocați anumite pagini interne de la indexare.

3. Sortarea

Poate doriți să includeți Opțiuni suplimentare alegere (de exemplu, prețul unui produs, popularitatea acestuia etc.). Desigur, acest lucru este foarte convenabil pentru clienți, dar există riscul de conținut duplicat. Dacă nu doriți ca aceeași pagină să fie indexată de un motor de căutare de mai multe ori din cauza căilor de navigare diferite, utilizați JavaScript sau Ajax.

4. Problema conținutului duplicat

Cu o structură a site-ului cu fațete, problema conținutului duplicat apare din cauza prezenței diferitelor căi de navigare către aceeași pagină. Și dacă nu ești atent la această problemă, vei ajunge cu același conținut pe mai multe pagini.

Calea de navigare pe care o folosește un vizitator pentru a găsi un anumit produs nu este importantă. Este important ca doar una dintre căi să fie indexată. Pentru a face acest lucru, utilizați un CMS.În caz contrar, aceeași pagină va fi indexată de mai multe ori.

Și încă o dată despre unicitatea conținutului...

Să presupunem că ați creat o navigare rezonabilă cu fațete, pagini relevante pentru fiecare cuvânt cheie sau expresie, dar, în ciuda tuturor acestor lucruri, site-ul dvs. conține încă multe pagini similare, al căror conținut este lista de produse. Prin urmare, fiecare pagină trebuie să aibă propria sa conținut unic, și cu cât pagina este mai importantă, cu atât indicele de unicitate ar trebui să fie mai mare conținutul acesteia.

Deci, iată ce să rețineți:

  1. creați cât mai multe fațete este necesar pentru a plasa nu mai mult de 100 de produse pe o singură pagină;
  2. asigurați-vă că pentru fiecare fraza cheie, pentru care doriți să vă clasați în motoarele de căutare, există o pagină de destinație proprie;
  3. sortarea incorectă poate duce la conținut duplicat, pentru a evita acest lucru, utilizați Ajax și Java Script pentru a închide unele pagini interne din indexare;
  4. indiferent de calea de navigare pe care o folosește utilizatorul pentru a găsi o anumită pagină, o singură pagină ar trebui să fie indexată;
  5. nu uitați: conținutul informațional ar trebui să fie mai interesant și mai atractiv.

Experți de renume mondial în domeniul uzabilitatii și UX. La câțiva ani, ei studiază succesul căutării pe site-uri web comerțul electronicși distribuie rezultatele pe blogul lor. Ultimul studiu a fost realizat în 2017. În special pentru tine, am citit articolul cu descrierea lui, l-am tradus și am formulat concluzii practice care te vor ajuta să îmbunătățești căutarea pe propriul site.

Algoritmi de căutare

Acceptă „ghilimele” operator de căutare avansată

NNGroup scrie că majoritatea vizitatorilor magazinelor online nu știu să folosească operatorii de căutare avansată. Dacă doresc să găsească o jucărie pentru pisici, nu vor căuta „pisica ȘI jucărie” pentru a vedea toate produsele care au ambele cuvinte cheie în descriere. Prin urmare, nu este necesar să se sprijine astfel de interogări de căutare complexe.

Ghilimelele sunt singura excepție. Dacă includeți o expresie între ghilimele, căutarea se va baza pe o potrivire completă cu expresia. Acest operator este utilizat în cautare Google, și este larg cunoscut printre utilizatorii avansați de Internet.

Sortați automat rezultatele căutării în funcție de gradul de potrivire cu interogarea dvs

ÎN rezultatele cautarii Acele produse care satisfac toate sau majoritatea cuvintelor cheie de interogare ar trebui să fie vizibile mai întâi.

Exemplu.În studiile anterioare, utilizatorii site-ului The Container Store s-au plâns de rezultatele căutării inexacte pe site. Un utilizator a dorit să cumpere un set de recipiente de depozitare din oțel inoxidabil cu un capac transparent. După ce a cerut „recipient de sticlă din oțel”, a primit perii de toaletă și borcane de sticlă. Utilizatorul a trebuit să reformuleze interogarea de căutare de mai multe ori, dar fără succes.

Problemă motor de căutare pe site a fost că rezultatele căutării au afișat toate produsele care se potriveau cu cel puțin un cuvânt de căutare („oțel”, „sticlă” sau „recipient”), nesortate după gradul de potrivire cu solicitarea inițială. Produs care se potrivește cu toate trei Cuvinte cheie, ar putea fi oriunde în listă, nu neapărat la început. Site-ul a fost actualizat ulterior algoritm de căutare: Acum, la începutul rezultatelor căutării, puteți vedea produse care se potrivesc cu toate sau majoritatea cuvintelor cheie ale interogării.

Rezultate îmbunătățite ale căutării pe containerstore.com: primul rezultat pentru recipient din oțel și sticlă se potrivește nevoilor utilizatorului

Când sortați rezultatele după evaluarea produsului, luați în considerare valoarea ponderată a acestuia, nu media.

Prin sortarea produselor după evaluarea medie a clienților, utilizatorii nu vor să vadă produse cu o singură evaluare, chiar dacă este de 5 stele. Oamenii nu doresc să dau peste o recenzie personalizată, iar evaluarea medie a unui produs bazată pe câteva recenzii îi face suspecti. Când este sortat după evaluare ponderată, un produs cu o evaluare medie de 4,9 din 5 și 342 de recenzii va fi clasat mai sus decât un produs cu o evaluare medie de 5 din 5 și 3 recenzii. În acest fel, utilizatorul își va putea face o idee obiectivă despre popularitatea și calitatea produsului.

Designul și poziția barei de căutare

Afișați bara de căutare într-un singur bloc cu meniul de navigare în antetul site-ului

Această aranjare a barei de căutare se găsește pe multe site-uri, astfel încât utilizatorii știu deja unde să caute pentru a o găsi. În plus, afișarea șirului de căutare într-un singur bloc cu meniu de navigatie rezolvă multe probleme, de exemplu, cu absența ei pe unele pagini ale site-ului și necesitatea de a o repeta suplimentar pe pagina cu rezultatele căutării.

Pe site-ul Wildberries este mare și clar vizibil șir de căutare situat chiar în antetul site-ului

Afișați o bară de căutare și o pictogramă lupă pe ecran

Când vizitatorii site-urilor de cumpărături online doresc să folosească căutarea, ei caută un câmp larg gol sau o pictogramă lupă. În același timp, nu mai este necesar să semnați în mod explicit șirul de căutare și să îl numiți „Căutare”, deși nu va strica.

Multe site-uri în versiuni pentru smartphone-uri folosesc cu succes pictograma lupă și nu arată linia în sine, ceea ce le permite să economisească spațiu pe ecran. Dar dacă vânzările site-ului dvs. depind de căutare, este mai bine să afișați imediat bara de căutare, chiar și pe ecrane mici. Acest lucru este valabil mai ales pentru versiunile pentru PC ale site-urilor web, unde există mai mult decât suficient spațiu pe ecran. Utilizați un câmp gol cu ​​un buton „Găsiți” sau o pictogramă lupă. Câmpul ar trebui să fie vizibil pe fiecare pagină.

Restrângeți rezultatele căutării

Nu utilizați căutarea avansată sau căutarea pe categorii decât dacă sunteți Amazon

În trecut, multe magazine online foloseau funcții avansate de căutare și de căutare pe categorii pentru a ajuta utilizatorii să restrângă numărul de articole din rezultatele căutării lor. Cu toate acestea, oamenii nu folosesc de fapt căutarea avansată și adesea devin confuzi atunci când caută după categorii, așa că aceste caracteristici au demodat treptat.

Astfel de metode avansate de căutare sunt acum disponibile doar pe acele site-uri unde sunt cu adevărat utile. Acestea sunt fie site-uri cu scenarii speciale de căutare, cum ar fi eBay, fie magazine online cu un număr mare de produse, precum Amazon și Wal-Mart.

În alte cazuri, este mai bine să utilizați căutarea fațetă. A lui diferența cheie din căutarea categoriei este că utilizatorii restrâng selecția de produse DUPĂ ce primesc rezultate pentru o interogare de căutare, și nu ÎNAINTE.

Utilizați căutarea fațetă

Căutarea cu fațete permite utilizatorilor să își restrângă rezultatele căutării folosind filtre bazate pe atributele produselor pe care utilizatorii le vizualizează. Dacă anterior căutarea fațetă era un plus frumos pentru un magazin online, acum utilizatorii sunt atât de obișnuiți cu ea încât o caută pe site și își exprimă nemulțumirea dacă nu există. În zilele noastre, site-urile de comerț electronic fără căutare fațetă sunt mai degrabă excepția decât regula.

Căutare fațetă pe site-ul magazinului online Utkonos: filtrele din stânga vă permit să restrângeți rezultatele

Completare automată în bara de căutare

Suportă funcția de completare automată

Caracteristica de completare automată este că, pe măsură ce utilizatorul introduce un cuvânt în bara de căutare, vede interogările recomandate într-o listă derulantă. Dacă o solicitare din listă se potrivește utilizatorului, atunci acest lucru îl economisește timp și, de asemenea, ajută la evitarea greșelilor de scriere și a altor erori.

Funcția de completare automată a fost prezentă pe majoritatea site-urilor studiate de NNGroup. În același timp, studiul a arătat că utilizatorii au ales opțiuni din lista celor propuse nu atât de des - în doar 23% din cazuri. De obicei, ei vor continua să tasteze interogarea lor.

Cu toate acestea, completarea automată este utilă. Chiar dacă utilizatorii nu selectează o opțiune din listă, ei pot vedea și înțelege ce produse sunt disponibile pe site și ce caută alți cumpărători.

Suportă completare automată avansată

Căutările de completare automată care conțin produse recomandate, fotografii și alt conținut pe lângă lista de interogări sunt o tendință care câștigă popularitate pe unele site-uri e-com. A apărut în urmă cu aproximativ cinci ani, dar a dispărut rapid, iar acum s-a întors formă nouă, care amintește de un megameniu - un câmp drop-down cu opțiuni de interogare recomandate ocupă destul de mult spațiu pe ecran.

Căutați cu completare automată avansată în magazinul online Labyrinth

Cercetările NNGroup au arătat că această funcție funcționează cel mai bine pe site-uri cu o varietate de categorii de produse sau produse care sunt vizual foarte diferite unele de altele.

Probleme de căutare de bază

Probleme cheie care îngreunează căutarea pe site:

  • funcție de căutare discretă: de exemplu, ascunsă în spatele unei mici pictograme lupă aprinsă ecran mare sau în meniul de hamburgeri versiune mobila site-ul web;
  • un șir de căutare insuficient de „inteligent” care nu poate gestiona greșelile de scriere, erorile sau sinonimele pentru cuvintele cheie de interogare;
  • afișare non-standard a rezultatelor (comutație între pagini, sortare, filtrare);
  • filtre prost gândite (atribute irelevante, funcționalitate slabă, rezultate goale).

Cum poate ajuta USABILITYLAB să îmbunătățească căutarea pe site-ul magazinului dvs. online

Aceasta încheie analiza noastră a articolului NNGroup. Sperăm că ți-a fost de folos.

Dacă doriți să evaluați sau să îmbunătățiți căutarea pe site-ul dvs., vă rugăm să ne contactați. O vom duce la îndeplinire. Pentru testarea gradului de utilizare, vom implica reprezentanți ai dvs public țintă. Ei vor lucra pe site-ul dvs. sub supravegherea expertului nostru. Laboratorul nostru este echipat cu o oglindă unidirecțională, astfel încât să puteți fi prezent și în timpul testării și să vedeți tot ceea ce fac respondenții. Pe baza rezultatelor testării, vom trage concluzii despre cât de bine răspund căutarea de pe site-ul dvs. nevoilor utilizatorilor și vom formula recomandări pentru îmbunătățirea acesteia, pe care le puteți transmite dezvoltatorilor dvs.

Pentru a afla mai multe despre serviciile noastre, lăsați o solicitare pe site-ul nostru web sau scrieți lui Dmitry Silaev: