Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • In contact cu
  • Care este cea mai bună modalitate de a implementa căutarea fațetă. PINQ - Seturi de date interogate

Care este cea mai bună modalitate de a implementa căutarea fațetă. PINQ - Seturi de date interogate

Căutare fațetă încorporată

Încorporat în produs

Căutarea fațetă încorporată în magazinul online - căutare internă - funcționează rapid în mulți parametri și nu încarcă sistemul.

  • Încorporat în produs
  • Foarte rapid
  • Nu încarcă site-ul
  • Este partea principală a API-ului infoblock
  • Nu necesită reproiectarea site-ului web
  • Reindexat automat
De ce foarte repede?

Clientului i se prezintă instantaneu rezultate de căutare pregătite în prealabil - pentru orice combinație de parametri - fațetă. Sistemul calculează în avans fațetele produsului - tot felul de intersecții ale acestor proprietăți în filtru. Aceste kituri de căutare gata făcute sunt apoi distribuite clienților.

De ce nu incarca site-ul?

Când rezultatul este returnat clientului, nu are loc niciun calcul, deoarece rezultatul este deja gata. O fațetă pentru un produs nou este creată imediat după adăugarea acestuia în catalogul comercial. Căutarea este reindexată automat în funcție de produse noi și proprietăți noi.

Beneficii pentru client

Beneficiile căutării fațete

Clientul dvs. găsește un produs foarte repede, jucându-se cu ușurință cu setările de filtru. Clientul nu așteaptă și obține rezultatul instantaneu. Viteza de căutare nu depinde de numărul de articole din catalog.


Filtru inteligent 2.0

Clientul gaseste rapid produsul

Clientul dvs. găsește un produs foarte repede, restrângând constant interogarea de căutare. Și la fiecare pas, el primește instantaneu rezultate - o listă de produse la cerere. Nu trebuie să aștepte ca cererea sa să fie procesată. Pentru că sistemul a calculat în avans toate opțiunile posibile și pur și simplu dă spații libere. Treptat, magazinul online oferă din ce în ce mai puține produse ca rezultate. Aceste produse sunt din ce în ce mai aproape de cererea cumpărătorului.

Interactivitate și multidimensionalitate

Alegerea unui produs pentru un client este ca un joc. Clientul trage casetele de parametri (preț, greutate), schimbă proprietăți (culoare, dimensiune), stabilește condiții suplimentare (marca, material, gust etc.), iar sistemul reconstruiește imediat rezultatele. În același timp, pot exista oricât de mulți parametri reglabili doriți - numărul lor nu afectează viteza de formare a rezultatului.

Comoditate și prietenie

Cu navigarea cu fațete, chiar și un utilizator fără experiență poate găsi cu ușurință un produs într-un magazin. Este foarte convenabil să manipulați instrumentele de căutare. În plus, sistemul solicită cumpărătorului toți parametrii prin care poate alege un produs. Magazinul, așa cum spune, demonstrează clientului proprietățile de bază ale produsului.

Clientul nu așteaptă ca cererea să fie procesată!
De exemplu, să presupunem că clientul dvs. cumpără o cameră. Inițial, el indică doar 3 parametri în filtrul inteligent: preț, marca, dimensiune. Fațeta sa conține 3 intersecții, sunt multe rezultate de căutare, dar clientul le obține imediat. Clientul stabilește greutatea - are nevoie de un gadget ușor. Sistemul imediat, fără întârziere, îi oferă o listă mai restrânsă de bunuri. Clientul setează dimensiunea ecranului, apoi specifică funcționalitatea necesară. Înaintea lui sunt bunurile căutate.


Viteza de căutare

Viteza de căutare contează

Viteza de căutare afectează numărul de achiziții

Nimic nu enervează un client ca să aibă probleme în găsirea produselor pe site-ul tău. Clientul va merge în alte magazine dacă caută prea mult timp. Chiar dacă magazinul tău conține o selecție mare de produse și multe instrumente pentru a le filtra. Este posibil ca clientul să nu aștepte rezultatele la cerere.


Tutorial video: De ce căutarea fațetă accelerează dramatic filtrul inteligent
Utilizarea „fațetei” accelerează căutările în magazin cu un ordin de mărime. Mai mult, viteza nu depinde de numărul de articole din catalog.

De ce este căutarea atât de lentă?
Căutarea unui articol într-o vitrină poate dura mult mai mult decât timpul normal de încărcare a paginii. Mai ales când în magazin există un număr mare de produse și proprietățile acestor produse. O interogare de căutare după mulți parametri creează o mulțime de apeluri la baza de date și încarcă semnificativ site-ul. Dacă există o mulțime de clienți și solicitări, căutarea încetinește semnificativ.

Viteza de lucru este impresionantă!

Rezultatele testelor versiunii 15.0 a produsului pe trei categorii de cataloage care conțin 500 de mii de articole au arătat că, în comparație cu versiunile anterioare:
  • Componenta de filtru inteligentă - de 15 ori mai rapid!
  • Componenta catalog - de 5 ori mai rapid!
Inteligența de căutare rămâne constantă!

Rapid chiar și fără fațetă!

Produsul lucrează constant pentru a accelera componentele catalogului în sine. Serviciul „Viteza site-ului” arată o creștere semnificativă a vitezei de la versiune la versiune!

Reconstrucţie

Reconstrucția continuă a rezultatelor indexării și căutării este în curs. Algoritmul de indexare a conținutului este revizuit și accelerat. Calitatea prezentării rezultatelor căutării este îmbunătățită - în special, „zgomotul” este redus. Dezvoltatorii plănuiesc să afișeze date personalizate pentru clientul actual în rezultatele căutării.

Pentru dezvoltatori: transparență pentru API


Vederea anterioară

„Fațeta” este transparentă pentru API

„Fațeta” încorporată în produs este transparentă pentru API. Este partea principală a API-ului infoblock. Prin urmare, nu necesită eforturi suplimentare pentru ca dezvoltatorii să-l folosească. De asemenea, nu este necesară nicio reluare a site-ului web.
  • Accelerarea metodei CIBlockElement :: GetList
  • Integrare completă cu filtru inteligent
GetList este acum mai rapid, deoarece conectează automat o „fațetă” la funcționare. Există, de asemenea, un API separat pe D7.

Integrare completă cu filtru inteligent

Acum, atunci când faceți setări în partea administrativă, pentru proprietățile bunurilor, nu puteți doar să setați activitatea - dacă să participați sau nu la filtrul inteligent. Prin transmiterea unei proprietăți la Smart Filter, puteți selecta imediat opțiunea pentru a le afișa. Cum să afișați proprietatea clienților: butoane, dimensiuni, glisoare, liste derulante, liste de selectare a culorilor etc.



Afișați proprietatea în filtrul inteligent

Disponibil la personalizare!

Filtrul inteligent arată mai frumos. Dezvoltatorii pot personaliza cu ușurință și personaliza în continuare aspectul acestuia.

Filtrul inteligent sau Căutare cu fațete este un filtru pe categorii de produse, care poate fi văzut în marile magazine online și în același Yandex.market. Ajută la sortarea constantă a produselor cu proprietățile de care are nevoie utilizatorul, eliminând toate lucrurile inutile. Aceasta este o opțiune foarte convenabilă care vă permite să găsiți rapid produsul sau materialul dorit pe site.

Deci, să trecem direct la instalarea și configurarea modulelor de care avem nevoie.

Mai întâi, trebuie să descarcăm și să instalăm următoarele module: Search API, Search API Database Search, Entity API și Views.

Pe pagina module, activați:

  • Căutare API
  • Căutați vizualizări
  • Căutare în baze de date
  • Entity API
  • Vizualizări
  • Vizualizări UI
  • Cinstrumente

Crearea unui motor de căutare

Mergi la Configurare> Căutare și metadate> Căutare API(/ admin / config / search / search_api) și faceți clic Adauga server.
Apoi introduceți numele serverului în lista verticală Clasa de serviciu alege Serviciul baze de dateși salvează.

Crearea indexului

Mergi la Configurare> Căutare și metadate> Căutare API(/ admin / config / search / search_api), faceți clic Adauga server (Adăugați index).
Introduceți numele indexului, în câmp Categorie de obiect (Categorie de obiect) alege ‘ Material', în câmp Server alege Server de baze de date, faceți clic Crearea unui index.


În formularul care se deschide, marcați câmpurile după care se va efectua sortarea și salvați.
Pentru a putea sorta după numele nodului, porniți titlul și, vizavi de acesta, în lista derulantă, selectați tipul şir, dar nu text complet... Nu puteți sorta după text complet.

În următoarea formă deschisă Filtre(flux de lucru) Am lăsat totul implicit, mergi la filă Vedere (stare), și apăsați Index acum (Index acum).
După ce indexarea este completă, să creăm o pagină de căutare.

Creați o pagină de căutare

Mergi la Structură> Vizualizăriși faceți clic Adăugați o nouă vizualizare (Adăugați o vizualizare nouă).
Într-o nouă vizualizare în lista verticală Spectacol (Spectacol) selectați indexul creat anterior, completați restul câmpurilor (nume, titlu și cale) după cum aveți nevoie.


Apoi, faceți clic Salvați și personalizați(Continuați și editați), configurați vizualizarea ca de obicei. In criteriile de filtrare am adaugat afisarea doar materialelor publicate si a tipului de nod necesar si am configurat afisarea campurilor obligatorii (trebuie sa adaugati aceste campuri la index pentru a putea filtra dupa ele).

În această etapă, am terminat cu configurarea vederii, acum vom merge direct la filtrul cu fațete.

A / search_api_ranges.module +++ b / search_api_ranges.module @@ -144.11 +144.8 @@ funcția search_api_ranges_minmax (variabile $, ordine $ = "ASC") (// altfel min / max ar fi întotdeauna egal cu introducerea utilizatorului. $ filtre = & $ interogare-> getFilter () -> getFilters (); foreach ($ filtrează ca $ cheie => $ filtru) (- - // Verificați matricea: filtrele de stil vechi sunt obiecte pe care le putem sări peste. - if (is_array) ($ filtru)) (- dacă ($ filtru == $ variabile ["range_field"] || ($ filtru! = $ variabile ["range_field"] && $ filter == "")) (- $ current_filter = $ filtre [$ cheie]; + if (isset ($ filter-> tags) && is_array ($ filter-> tags)) (+ if (în_array ("fațetă:". $ variabile ["range_field"], $ filter-> tags) )) (dezactivat ($ filtre [$ tasta]);))

Corectarea cursorului JQuery UI: Configurarea unei redirecționări

În versiunea 7x-1.5 a modulului, am dat peste faptul că, dacă widget-ul glisor este situat pe o altă pagină decât pagina de căutare, atunci după modificarea intervalului de preț, a fost redirecționat către pagina curentă și nu către pagina de căutare.
Eroarea constă în funcție search_api_ranges_block_slider_view_form_submit ()(fișier search_api_ranges.module, linia 364).
Nu m-am obosit să înțeleg ce este acolo și de ce, doar am schimbat puțin codul de pe linia 427:

Drupal_goto ($ cale, matrice ("interogare" => matrice ($ parametri), "limba" => $ limba)); + drupal_goto (valori $ ["cale"], matrice ("interogare" => matrice ($ parametri), "limba" => $ limba));

dupa care problema a fost rezolvata.

("interogare": ("și": [("termeni": ("țara": ["fi", "fr"])), ("termeni": ("categorie": ["cărți", "filme" "]))]))

Pentru contoare, putem folosi agregate încorporate din Elasticsearch. Fiecare dintre cele două fațete este stocată ca un câmp în index, astfel încât să putem agrega termeni în fiecare dintre aceste câmpuri. Agregarea va returna contorul pentru valoarea acestui câmp.

("interogare": ("și": [("termeni": ("țara": ["fi", "fr"])), ("termeni": ("categorie": ["cărți", "filme" "]))])," agregari ": (" țări ": (" termeni ": (" câmp ":" țară "))," categorii ": (" termeni ": (" câmp ":" categorie ") )))

Dacă ați urmat această interogare, veți observa că contoarele sunt dezactivate. Cele două țări neselectate, Portugalia și Brazilia, au un numărător de 0. Deși există rezultate reale dacă vrem să le selectăm (din cauza marginii interioare SAU). Acest lucru se datorează faptului că, în mod implicit, Elasticsearch își realizează agregările pe setul de rezultate. Aceasta înseamnă că, dacă selectați Franța, filtrele celeilalte țări vor avea un scor 0, deoarece setul de rezultate conține doar articole din Franța.

Pentru a remedia acest lucru, trebuie să îi instruim pe Elasticsearch să cumuleze întregul set de date, ignorând solicitarea. Putem face acest lucru definindu-ne clusterele ca fiind globale.

("interogare": ("și": [("termeni": ("țara": ["fi", "fr"])), ("termeni": ("categorie": ["cărți", "filme" "]))])," agregari ": (" toate_produsele ": (" global ": ()," agregare ": (" țări ": (" termeni ": (" câmp ":" țară "))," categorii ": (" termeni ": (" câmp ":" categorie "))))))

Dacă tocmai am face acest lucru, contoarele noastre ar fi întotdeauna aceleași, deoarece ar conta întotdeauna pe întregul set de date, indiferent de filtrele noastre. Agregatele noastre trebuie să devină puțin mai complexe pentru ca acest lucru să funcționeze, trebuie să le adăugăm filtre. Fiecare agregare trebuie să se bazeze pe un set de date cu toate filtrele aplicate, cu excepția celor proprii. Astfel, agregarea după cont în Franța se bazează pe un set de date care utilizează un filtru de categorie, dar nu un filtru de țară:

("interogare": ("și": [("termeni": ("țara": ["fi", "fr"])), ("termeni": ("categorie": ["cărți", "filme" "]))])," agregari ": (" toate_produsele ": (" global ": ()," agregari ": (" țări ": (" filtru ": (" și ": [(" termeni ": () „categorie”: [„cărți”, „filme”]))]), „agregații”: („țări_filtrate”: („termeni”: („câmp”: „țară”)))), „categorii”: ( "filtru": ("și": [("termeni": ("țara": ["fi", "fr"]))]), "agregații": ("categorii_filtrate": ("termeni": (" câmpul „:” categoria „))))))))

("a luat": 153, "timed_out": false, "_shards": ("total": 5, "success": 5, "failed": 0), "hits": ("total": 3, "max_score" ": 0," accesări ": [" ... "])," aggregations ": (" all_products ": (" doc_count ": 21," categorii filtrate ": (" doc_count ": 13," categorii ": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [("key": "filme", ​​"doc_count": 6), ("cheie": "muzică", "doc_count": 4), ( "key": "cărți", "doc_count": 3)])), "filtered_countries": ("doc_count": 15, "țări": ("doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [(„cheie”: „fr”, „doc_count”: 6), (“cheie”: „br”, „doc_count”: 4), (“cheie”: „fi”, „doc_count”: 3), ( „cheie”: „pt”, „doc_count”: 2)])))))

Cadrul Yii2

$ termeni = QueryHelper :: termeni ("categorii.nume", "categoria mea"); $ imbricat = QueryHelper :: imbricat ("string_facet", QueryHelper :: filtru ([QueryHelper :: termen ("string_facet.facet_name", ["value" => $ id, "boost" => 1]), QueryHelper :: termen ("string_facet.facet_value", ["value" => $ value, "boost" => 1]),])); $ filter = QueryHelper :: ar trebui ($ imbricat);

În lecția de astăzi, vom încerca să recreăm imitația căutării fațetate (fațetate) folosind Javascript. Presupun că știți deja ce este căutarea fațetă, deoarece citiți acest tutorial, altfel căutați-l pe Google sau verificați Amazon sau Demo-ul meu.

În primul rând, avem nevoie de biblioteca github.com/eikes/facetedsearch. Descărcați-l și includeți fișierul facetedsearch.js în proiectul nostru. Avem nevoie și de bibliotecile jQuery și Underscore.

Disclaimer:Înțeleg că JQ nu mai este o prăjitură, dar îl folosesc ca zahăr sintactic familiar, îl poți vedea sub bibliotecile tale mai familiare sau în vanilla JS.

Deci, mai întâi, să facem un marcaj simplu cu dependențe conectate:

Document

// Aici vom scoate filtrele de fațete
// Și aici vor fi elementele noastre

Acum trebuie să descriem setările aplicației noastre și să creăm un șablon pentru afișarea elementelor matricei pe care le vom sorta folosind fațete:

Ei bine, creați de fapt matricea JSON în sine cu elemente care urmează să fie afișate în căutarea noastră fațetă în JS:

Elemente variabile = [("prenume": "Mary", "nume": "Smith", "imageURL": "http://lorempixel.com/150/150/cats/2", "descriere": "Sed Ea Amet. Stet Voluptua. Nonumy Magna Takimata "," categoria ":" Mouse "," limba ": [" Smalltalk "," XSLT "]," continent ":" Africa "), (" prenume ":" Patricia ", "lastname": "Johnson", "imageURL": "http://lorempixel.com/150/150/cats/3", "description": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Sit Lorem Amet. Ipsum Rebum." , „categorie”: „Leu”, „continent”: „America de Nord”), ...];

Aș pune această matrice într-un fișier JS separat care ar fi generat dinamic, dintr-o bază de date, de exemplu.

Asta e tot, obținem căutare fațetă în JavaScript și o putem personaliza. În continuare, vă prezint documentația tradusă a bibliotecii, unde puteți spiona declanșatoarele de care aveți nevoie.

Documentație

Funcții

Două funcții sunt exportate în spațiul de nume jQuery.

facetelize Folosit pentru a inițializa căutarea fațetă cu setările specificate.

facetUpdate Poate fi folosit când doriți să schimbați starea căutării fațetelor în exterior.

Setări obiect

articole: o serie de articole care trebuie filtrate și sortate în proces.

fațete: obiectul pentru care cheile corespund cheilor și valorilor elementului este titlul acestei fațete. Elementele vor fi filtrate în funcție de valoarea pe care o au pentru aceste chei.

orderByOptions: similar cu fațetele, cu excepția faptului că aceste perechi cheie-valoare sunt folosite numai pentru sortare. Când comutatorul RANDOM este pornit, rezultatele pot fi randomizate.

facetSelector: Acesta este un selector care este folosit pentru a găsi nodul DOM din care să selectați filtrele de fațete.

resultSelector: Acesta este un selector care este folosit pentru a găsi nodul DOM unde sunt afișate rezultatele.

resultTemplate: un șir care este utilizat de motorul de șabloane Underscore pentru a reda fiecare articol din matricea de articole. Următoarele atribute sunt adăugate fiecărui articol care poate fi folosit și într-un șablon: batchItemNr, batchItemCount și totalItemCount.

stare: Acest obiect stochează filtrele curente, sortează: currentResult și altele. Puteți furniza un șir orderBy sau un obiect filtre pentru a le preconfigura.

enablePagination: Boolean pentru a activa paginal și butonul „încărcare mai mult”, adevărat în mod implicit.

paginationCount: Dacă paginatorul este activat, setează numărul de articole pe pagină, implicit este 50.

facetSortOption: Utilizați această funcție pentru a schimba ordinea elementelor de fațetă. Acceptă un obiect în care cheile corespund numelor și valorilor fațetelor într-o matrice de valori ale fațetelor, care pot fi aranjate în ordinea în care doriți să fie. Acest exemplu va sorta continentele într-o ordine diferită, adăugând elemente care nu sunt incluse în matrice în ordine alfabetică:

FacetSortOption: ("continent": ["America de Nord", "America de Sud")])

Mai sunt câteva șabloane, vă rugăm să consultați codul sursă al facetedsearch.js pentru a vedea toate opțiunile de șabloane disponibile.

Evenimente

Vă puteți lega de anumite evenimente care ar trebui să trimită notificări atunci când au avut loc o acțiune. Pentru aceasta folosim sistemul de evenimente jquery:

facetuicreated: Puteți lega această funcție la setările elementului DOM.facetSelector care ar trebui să fie notificat când interfața cu utilizatorul a fost creată.

facetedsearchresultupdate: puteți lega această funcție de elementul DOM settings.resultSelector pentru a fi notificat cu privire la rezultatele actualizării.

facetedsearchfacetclick: acest eveniment este declanșat când se face clic pe o fațetă și se declanșează pe elementul settings.facetSelector. Care primește un id de fațetă ca argument.

facetedsearchorderby: Acest eveniment este declanșat atunci când se face clic pe un element de sortare pe elementul settings.facetSelector. Primește ID-ul comenzii ca argument.

$ (settings.resultSelector) .bind ("facetedsearchresultupdate", function () (// face ceva, poate));

În acest articol (nivel webmaster - avansat), vom vorbi despre intersectarea după diferite criterii, așa-numitele. navigare „fațetată”. Pentru a simplifica asimilarea materialului, recomand parcurgerea articolului Wikipedia „Faceted classification” și a publicațiilor în limba engleză (dar cu imagini!) „Design better faceted navigation for your websites”.

Navigarea cu fațete filtrată după culoare sau interval de preț poate fi utilă pentru vizitatorii dvs., dar adesea dăunează căutărilor prin crearea multor combinații de adrese de conținut duplicat. Din cauza duplicaturilor, motoarele de căutare nu vor putea accesa rapid site-ul pentru actualizări de conținut, ceea ce afectează în consecință indexarea. Pentru a minimiza această problemă și pentru a ajuta webmasterii să faciliteze căutarea cu navigare fațetă, am dori să:

Ideal pentru utilizatori și căutări pe google

O cale clară către pagini de produse/articole:

Reprezentare URL pentru pagina categoriei:
http://www.example.com/category.php?category=gummy-bomboane

Reprezentare URL specifică produsului:
http://www.example.com/product.php?item=swedish-fish

Dubluri nedorite cauzate de navigarea fațetă

Aceeași pagină este accesibilă de la diferite adrese web:

Pagina canonică



Adresa URL: example.com/product.php? item = Swedish-fish

Pagina duplicată



Adresa URL: example.com/product.php? item = suedeză-pește & categorie = gummy-bomboane & preț = 5-10


categorie = bomboane-gumoase & gust = acru & pret = 5-10

Erori:

  • Nu are rost la Google, deoarece utilizatorii caută rar [jujube la 9:55 USD].
  • Nu are sens ca crawlerii să găsească același articol („salata de fructe”) din paginile categoriilor părinte (fie „Gummy”, fie „Sour Gummy”).
  • Un punct negativ pentru proprietarul site-ului, deoarece solicitările de indexare sunt diluate cu mai multe versiuni ale aceleiași categorii.
  • Un punct negativ pentru proprietarul site-ului, deoarece este o încărcare inutilă și inutilă în lățimea de bandă a site-ului
Pagini goale:


Adresa URL: example.com/category.php? categorie = bomboane-gumoase & gust = acru & preț = peste 10

Erori:

  • Codul pentru motoarele de căutare este dat incorect (în acest caz, pagina trebuie să returneze un cod 404)
  • Pagina goală pentru utilizatori


Cele mai proaste soluții (nu sunt prietenoase cu căutarea) navigare cu fațete

Exemplul #1: Parametrii non-standard sunt utilizați în adresa URL: virgule și paranteze, în loc de cheie = valoare &:

  • example.com/category? [categorie: bomboane-gumoase] [sortare: preț-de mic la mare] [sid: 789]
  • example.com/category?category, gummy-candy, sort, lowtohigh, sid, 789
Cum să:
example.com/category? categorie = bomboane de gumă și sortare = de la mic la mare și sid = 789

Exemplul nr. 2: Folosind directoare sau căi de fișiere, mai degrabă decât parametrii în listele de valori care nu schimbă conținutul paginii:
example.com/c123 / s789 / product? Swedish-fish
(unde / c123 / este o categorie, / s789 / ID de sesiune, care nu modifică conținutul paginii)

Buna decizie:

  • example.com / gummy-bomboane / produs? item = Swedish-fish & sid = 789(directorul, / gummy-candy /, modifică conținutul paginii într-un mod semnificativ)
Cea mai bună soluție:
  • example.com/product?item=swedish-fish& categorie = gummy-bomboane & sid = 789 (Parametrii URL oferă motoarele de căutare multă flexibilitate pentru a determina cum să acceseze cu crawlere eficient)
Este dificil pentru roboții de căutare să diferențieze valorile utile (de exemplu „gummy-candy”) de cele neutile (ex. „SESSIONID”) atunci când aceste valori sunt plasate direct în calea link-ului. Pe de altă parte, parametrii URL oferă motoarele de căutare flexibilitate pentru a verifica și determina rapid când o anumită valoare nu necesită un crawler (crawler) pentru a accesa toate variațiile.

Valorile obișnuite care nu modifică conținutul paginii și ar trebui listate ca parametri URL includ:

  • Sesiune ID
  • ID-uri de urmărire
  • Identificatori de referință
  • Marcaje de timp
Exemplul nr. 3: convertiți valorile generate de utilizator (posibil infinite) în parametri URL care pot fi accesați cu crawlere și indexați, dar care nu pot fi căutați.
Utilizarea datelor minore generate de utilizatorii site-ului (cum ar fi longitudinea/latitudinea sau „cu zile în urmă”) în adresele URL accesate cu crawlere și indexate:
  • example.com/find-a-doctor? raza = 15 & latitudine = 40,7565068 & longitudine = -73,9668408
  • example.com/article?category=health& zile în urmă = 7
Cum să:
  • example.com/find-a-doctor? oraș = san-francisco și cartier = soma
  • example.com/articles?category=health& data = 10-ianuarie-2014
În loc de a lăsa utilizatorul să genereze valori pentru a genera URL-uri crawabile (ceea ce duce la posibilități infinite cu foarte puțină valoare pentru vizitatori), este mai bine să publice categoria paginii pentru cele mai populare valori, în plus, informații suplimentare pot fi incluse pentru face pagina mai valoroasă decât o pagină de căutare obișnuită cu rezultate. Alternativ, ați putea lua în considerare plasarea valorilor generate de utilizator într-un director separat și apoi utilizarea robots.txt pentru a preveni accesarea cu crawlere din acel director.
  • exemplu.com / filtrare / Găsiți un medic? rază = 15 și latitudine = 40,7565068 și longitudine = -73,9668408
  • exemplu.com / filtrare / articole? categorie = sănătate și zile în urmă = 7
Și în robots.txt:
Agent utilizator: *
Nu permiteți: / filtrare /

Exemplul nr. 4... Adăugarea parametrilor URL fără logică.

  • exemplu.com / bomboane de gumă / acadele / bomboane de gumă / gummy-bomboane / produs?sweed-fish
  • example.com/product? pisică = bomboane-gumoase & pisică = acadele & pisică = bomboane-gumate& pisică = gummy-bomboane & item = suedez-pește
Buna decizie:
  • example.com / gummy-bomboane / produs? item = Swedish-fish
Cea mai bună soluție:
  • example.com/product? item = suedeză-pește și categorie = gummy-bomboane
Parametrii URL străini nu fac decât să mărească duplicarea, ca urmare, site-ul este accesat cu crawlere și indexat mai puțin eficient. Prin urmare, trebuie să scăpați de parametrii URL inutile și să curățați periodic linkurile nedorite înainte de a genera noi adrese URL. Dacă sunt necesari mulți parametri pentru o sesiune de utilizator, este posibil să ascundeți informații în cookie, mai degrabă decât să adăugați constant valori precum pisică = bomboane de gumă & pisică = acadele & pisică = bomboane de gumă & ...

Exemplul nr. 5: Sugerați îmbunătățiri suplimentare (filtrare) atunci când nu există rezultate.

Prost:
Permiteți utilizatorilor să selecteze filtre atunci când există elemente nule de rafinat.


Clarificare la o pagină cu zero rezultate (de exemplu, preț = peste 10), care frustrează utilizatorii și provoacă interogări inutile pentru motoarele de căutare.

Cum să:
Creați linkuri numai atunci când există elemente pe care utilizatorul le poate selecta. Dacă rezultatul este zero, marcați linkul „gri” (adică indisponibil pentru clic). Pentru a îmbunătăți și mai mult gradul de utilizare, luați în considerare includerea unei valori pentru numărul de articole disponibile lângă fiecare filtru.


Afișarea unei pagini cu zero rezultate (de exemplu, preț = peste 10) nu este permisă, plus utilizatorilor le este interzis să facă clicuri inutile, iar motorul de căutare nu accesează cu crawlere această pagină inutilă.

Este necesar să preveniți apariția adreselor URL inutile și să minimizați spațiul vizitatorilor prin crearea unei adrese URL numai atunci când produsele sunt disponibile. Acest lucru va ajuta utilizatorii să rămână ocupați pe site-ul dvs. (mai puține clicuri pe butonul Înapoi atunci când nu sunt găsite produse) și va reduce numărul de adrese URL posibile cunoscute de motoarele de căutare. De asemenea, dacă o pagină nu este doar „temporar epuizată” și este puțin probabil să conțină vreodată informații relevante, luați în considerare crearea unui cod de răspuns 404 pentru aceasta. Pe o pagină 404, puteți crea un mesaj util pentru utilizatori cu mai multe opțiuni de navigare sau o casetă de căutare, astfel încât utilizatorii să poată găsi produse similare.

Pentru site-urile noi ai căror webmasteri se gândesc să introducă navigarea cu fațete, există mai multe opțiuni pentru optimizarea accesării cu crawlere (colecția de adrese de pe site-ul dvs. cunoscută de Google) a paginilor cu conținut unic și reducerea paginilor duplicate de la indexarea de către motorul de căutare (consolidarea semnalelor de indexare) .

Determinați ce parametri URL sunt necesari pentru ca motoarele de căutare să acceseze cu crawlere fiecare pagină de conținut individuală (adică stabiliți ce parametri sunt necesari pentru a genera cel puțin o cale de clic către fiecare articol). Parametrii necesari pot include item-id, categorie-id, pagina etc.

Determinați ce parametri vor fi utili vizitatorilor cu interogările lor și care sunt cel mai probabil să provoace dublare în accesarea cu crawlere și indexare. În exemplul de cofetărie (marmeladă), parametrul URL „gust” poate fi valoros pentru utilizatorii cu interogări în exemplu gust = acru ... Cu toate acestea, este logic să se ia în considerare parametrul „preț” care provoacă dublari inutile. categorie = bomboane de gumă și gust = acru și pret = peste-10 ... Alte exemple comune:

  • Parametri valoroși pentru motoarele de căutare: item-id, categorie-id, nume, brand...
  • Parametri inutile: ID-ul sesiunii, intervalul de preț...
Să luăm în considerare implementarea uneia dintre mai multe opțiuni de configurare pentru adresele URL care conțin parametri inutile. Asigurați-vă că parametrii URL „inutil” nu sunt cu adevărat necesari pentru accesarea cu crawlere de către motoarele de căutare sau pentru ca utilizatorul să găsească fiecare produs!

Opțiunea 1: și link-uri interne

Marcați orice adrese URL inutile cu atributul. Acest lucru va reduce sarcina de lucru a crawler-ului și va preveni scăderea frecvenței de crawler. Trebuie să gestionați accesarea cu crawlere la nivel global prin robots.txt (Nota traducătorului: consultați articolul „”).
Utilizați atributul rel = „canonic” pentru a separa paginile pentru indexul de căutare de paginile care nu sunt necesare acolo (de exemplu, o pagină pret = 5-10 puteți scrie atributul rel = „canonic” pentru a indica categoria tuturor marmeladei acru example.com/category.php?category=gummy-candies&taste=sour& pagina = all ).

Opțiunea 2: Robots.txt și Disallow

Adresele URL cu parametri inutile sunt incluse în directorul / filtrare /, care va fi închis în robots.txt (dezactivare interzicere). Acest lucru va permite tuturor motoarelor de căutare să acceseze cu crawlere numai site-ul „corect” în link (conținut), dar va bloca accesul cu crawlere a adreselor URL nedorite imediat. De exemplu ( example.com/category.php?category=gummy-bomboane), dacă elementul, categoria și gustul ar fi parametrii valoroși, iar ID-ul sesiunii și prețul ar fi redundante, atunci URL-ul pentru gust ar fi astfel:
example.com/category.php?category=gummy-bomboane& gust = acru, dar toți parametrii inutile, cum ar fi prețul, vor fi incluși în adresa URL din directorul predefinit - / filtrare /:
exemplu.com / filtrare / categorie.php? categorie = bomboane-gumoase și preț = 5-10,
care va fi apoi refuzat prin robots.txt:
Agent utilizator: *
Nu permite: / filtrare /

Opțiunea 3: gazde separate

Asigurați-vă că cele mai bune soluții enumerate mai sus (de exemplu, pentru adrese inutile) încă se aplică. În caz contrar, motoarele de căutare au generat deja o masă mare de link-uri în index. Astfel, munca dumneavoastră va avea ca scop reducerea creșterii în continuare a paginilor inutile accesate cu crawlere de Google și consolidarea semnalelor de indexare.

Utilizați parametrii cu codificare standard și format cheie = valoare.

Asigurați-vă că valorile care nu modifică conținutul paginii, cum ar fi ID-urile de sesiune, sunt implementate ca cheie = valoare, nu directoare.

Nu permiteți clicuri și nu generați adrese URL atunci când nu există elemente de filtrat.

Adăugați logica la afișarea parametrilor URL: eliminați parametrii care nu sunt necesari și nu adăugați constant valori (de exemplu, evitați generarea unui link ca acesta: example.com/product?cat=gummy-candy&cat=lollipops & cat = gummy-bomboane & item = Swedish-fish).

Stocați parametrii valoroși în adresa URL listându-i mai întâi (deoarece adresele URL sunt vizibile în rezultatele căutării) și parametrii mai puțin relevanți (de exemplu, ID-ul sesiunii).
Evitați această structură de legături: example.com/category.php? session-id = 123 și tracking-id = 456& categorie = gummy-bomboane & gust = acru
Ajustați parametrii URL din Instrumentele pentru webmasteri dacă aveți o înțelegere solidă a modului în care funcționează linkurile pe site-ul dvs.

Asigurați-vă că, atunci când utilizați JavaScript pentru a gestiona în mod dinamic conținutul (sortați / filtrați / ascundeți) fără a reîmprospăta adresa URL, pe site-ul dvs. există adrese web reale care au valoare de căutare, cum ar fi principalele categorii și pagini de produse care pot fi accesate cu crawlere și indexabile. . .. Încercați să nu utilizați doar pagina de pornire (adică o singură adresă URL) pentru întregul dvs. site, ci modificați dinamic conținutul cu navigarea prin JavaScript - acest lucru, din păcate, va oferi utilizatorilor o singură adresă URL în căutare. De asemenea, verificați dacă performanța nu afectează negativ performanța filtrării dinamice, deoarece va interfera cu utilizatorul care lucrează cu site-ul.

Îmbunătățiți indexarea diferitelor pagini ale aceluiași conținut prin specificarea atributului rel = „canonic” pe versiunea preferată a paginii. Atributul rel = „canonic” poate fi utilizat în cadrul unuia sau mai multor domenii.

Optimizați indexarea conținutului paginat în pagini de „codare” (de exemplu, pagina = 1 și pagina = 2 din categoria „bomboane gummy”) folosind (sau):

  • Adăugați atributul rel = „canonic” la seria de pagini care indică categoria canonică cu parametrul „view-all” (de exemplu, pagina = 1, pagina = 2 și pagina = 3 din categoria „bomboane gummy” cu rel = „canonic” la categorie = bomboane-gumoase & pagina = toate), asigurându-vă că pagina este utilă utilizatorilor și se încarcă rapid.
  • Utilizați marcajul de paginare rel = „next” și rel = „prev” pentru a indica relația dintre paginile individuale (consultați articolul „Paginaton with rel =" next "și rel =" prev "" ").
Includeți numai linkuri canonice în sitemapurile dvs.

Top articole similare