Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Në kontakt me
  • Cila është mënyra më e mirë për të zbatuar kërkimin me aspekte? PINQ - Grupet e të dhënave të pyetura

Cila është mënyra më e mirë për të zbatuar kërkimin me aspekte? PINQ - Grupet e të dhënave të pyetura

Kërkim i integruar me aspekte I integruar në produkt

Kërkimi i aspekteve i integruar në dyqanin online - kërkimi i brendshëm - funksionon shpejt në shumë aspekte dhe nuk e ngarkon sistemin.

  • E integruar në produkt
  • Shumë shpejt
  • Nuk e ngarkon faqen
  • Është pjesa kryesore e API-së së infoblloqeve
  • Nuk kërkon ridizajnim të faqes në internet
  • Riindeksohet automatikisht
Pse kaq shpejt?

Klientit i prezantohet menjëherë rezultatet e kërkimit të përgatitura paraprakisht - për çdo kombinim të parametrave - aspekt. Sistemi llogarit paraprakisht aspektet për një produkt - të gjitha kryqëzimet e mundshme të këtyre vetive në filtër. Këto grupe kërkimi të gatshme u lëshohen më pas klientëve.

Pse nuk ngarkohet faqja?

Në momentin që rezultati i lëshohet klientit, nuk bëhen llogaritje, sepse rezultati është tashmë gati. Një aspekt për një produkt të ri krijohet menjëherë kur shtohet në katalogun e shitjeve. Kërkimi ri-indeksohet automatikisht në bazë të produkteve të reja dhe pronave të reja.

Përfitimet për klientët

Përparësitë e kërkimit me aspekte Klienti juaj e gjen produktin shumë shpejt, duke luajtur lehtësisht me cilësimet e filtrit. Klienti nuk pret dhe merr rezultate në çast. Shpejtësia e kërkimit nuk varet nga numri i artikujve në katalog.


Filtri i zgjuar 2.0

Klienti e gjen shpejt produktin

Klienti juaj e gjen produktin shumë shpejt duke ngushtuar vazhdimisht pyetjen e kërkimit. Dhe në çdo hap, ai menjëherë merr rezultate - një listë produktesh sipas kërkesës. Ai nuk duhet të presë që kërkesa e tij të shqyrtohet. Sepse sistemi ka llogaritur paraprakisht të gjitha opsionet e mundshme dhe thjesht lëshon boshllëqe. Gradualisht, dyqani online shfaq gjithnjë e më pak produkte si rezultat. Këto produkte po i afrohen gjithnjë e më shumë kërkesës së blerësit.

Interaktiviteti dhe shumëdimensionaliteti

Zgjedhja e një produkti për një blerës është si një lojë. Klienti zvarrit parametrat (çmimi, pesha), ndërron vetitë (ngjyrën, madhësinë), vendos kushte shtesë (marka, materiali, shija, etj.) - dhe sistemi i riorganizon menjëherë rezultatet. Në këtë rast, mund të ketë aq parametra të personalizueshëm sa ju pëlqen - numri i tyre nuk ndikon në shpejtësinë e gjenerimit të rezultatit.

Komoditet dhe miqësi

Me lundrimin me aspekte, edhe një përdorues i papërvojë mund të zgjedhë lehtësisht një produkt në dyqan. Manipulimi i mjeteve të kërkimit është shumë i përshtatshëm. Përveç kësaj, sistemi i kërkon blerësit të gjithë parametrat me të cilët ai mund të zgjedhë një produkt. Dyqani, si të thuash, i tregon klientit vetitë kryesore të produktit.

Klienti nuk pret që kërkesa të përpunohet!
Për shembull, klienti juaj blen një aparat fotografik. Fillimisht, ai tregon vetëm 3 parametra në filtrin inteligjent: çmimi, marka, madhësia. Aspekti i tij përfshin 3 kryqëzime, ka shumë rezultate kërkimi, por klienti i merr ato menjëherë. Klienti vendos peshën - ai ka nevojë për një vegël të lehtë. Sistemi menjëherë, pa vonesë, i jep atij një listë më të vogël të mallrave. Klienti cakton madhësinë e ekranit dhe më pas specifikon funksionalitetin e kërkuar. Përpara tij janë malli i dëshiruar.


Shpejtësia e kërkimit

Shpejtësia e kërkimit ka rëndësi Shpejtësia e kërkimit ndikon në numrin e blerjeve të kryera

Asgjë nuk e irriton një klient më shumë sesa vështirësia në gjetjen e produkteve në faqen tuaj të internetit. Klienti do të largohet për në dyqane të tjera nëse kërkon shumë gjatë. Edhe nëse dyqani juaj përmban një përzgjedhje të madhe produktesh dhe shumë mjete për filtrimin e tyre. Klienti mund të mos marrë rezultate nga kërkesa.


Udhëzues video: Pse kërkimi me aspekte përshpejton ndjeshëm një filtër inteligjent
Përdorimi i "aspektit" përshpejton kërkimin brenda dyqanit me një renditje të madhësisë. Në këtë rast, shpejtësia nuk varet nga numri i elementeve në drejtori.

Pse kërkimi është kaq i ngadaltë?
Kërkimi i një produkti në një vitrinë mund të zgjasë dukshëm më shumë se koha normale e ngarkimit të faqes. Sidomos nëse ka një numër të madh të produkteve në dyqan dhe vetitë e këtyre produkteve. Një pyetje kërkimi për shumë parametra krijon shumë goditje në bazën e të dhënave dhe ngarkon ndjeshëm faqen. Nëse ka shumë klientë dhe kërkesa, kërkimi ngadalësohet ndjeshëm.

Shpejtësia e punës është mbresëlënëse! Rezultatet e testit për versionin 15.0 të produktit në tre kategori katalogësh që përmbajnë 500 mijë artikuj treguan se në krahasim me versionet e mëparshme:
  • Komponenti inteligjent i filtrit – 15 herë më i shpejtë!
  • Komponenti i katalogut - 5 herë më shpejt!
Inteligjenca e kërkimit mbetet konstante!
Shpejt edhe pa “aspekt”! Produkti po punon vazhdimisht për të përshpejtuar vetë komponentët e katalogut. Shërbimi "Site Speed" tregon një rritje të ndjeshme të shpejtësisë nga versioni në version!

Rindërtimi

Rindërtimi i vazhdueshëm i rezultateve të indeksimit dhe kërkimit kryhet. Algoritmi i indeksimit të përmbajtjes po ripunohet dhe përshpejtohet. Cilësia e paraqitjes së rezultateve të kërkimit është përmirësuar - në veçanti, "zhurma" zvogëlohet. Zhvilluesit planifikojnë të shfaqin të dhëna të personalizuara për klientin aktual në rezultatet e kërkimit.

Për Zhvilluesit: API Transparency


Pamje e mëparshme

"Facet" është transparent për API "Aspekti" i integruar në produkt është transparent për API. Është pjesa kryesore e API-së së infoblocks. Prandaj, përdorimi i tij nuk kërkon përpjekje shtesë për zhvilluesit. Gjithashtu nuk ka nevojë të ridizajnohen faqet.
  • Përshpejtimi i metodës CIBlockElement::GetList
  • Integrim i plotë me filtrin inteligjent
GetList tani funksionon më shpejt sepse lidh automatikisht një "aspekt" për të funksionuar. Ekziston gjithashtu një API e veçantë në D7.

Integrim i plotë me filtrin inteligjent

Tani, kur bëni cilësime në pjesën administrative, për vetitë e produktit nuk mund të tregoni vetëm aktivitetin - nëse do të merrni pjesë apo jo në filtrin inteligjent. Duke kaluar një pronë te Filtri i zgjuar, mund të zgjidhni menjëherë se si t'i shfaqni ato. Në çfarë forme duhet t'u tregohet klientëve prona: butona, madhësi, rrëshqitës, lista rënëse, lista me përzgjedhje ngjyrash, etj.



Shfaq pronën në Filterin inteligjent

Mund të personalizohet!

Filtri inteligjent tani duket më i bukur. Zhvilluesit mund ta personalizojnë lehtësisht dhe të personalizojnë më tej pamjen e saj.

Filtri i zgjuar ose Kërkimi Faceted është një filtër sipas kategorisë së produktit, i cili mund të shihet në dyqanet e mëdha në internet dhe në të njëjtin Yandex.market. Ndihmon për të renditur vazhdimisht produktet me vetitë që i nevojiten përdoruesit, duke eliminuar gjithçka që është e panevojshme. Ky është një opsion shumë i përshtatshëm që ju lejon të gjeni shpejt produktin ose materialin e dëshiruar në sit.

Dhe kështu le të kalojmë drejtpërdrejt në instalimin dhe konfigurimin e moduleve që na duhen

Së pari, do të na duhet të shkarkojmë dhe instalojmë modulet e mëposhtme: Search API, Search API Database Search, Entity API dhe Views.

Në faqen e moduleve ne aktivizojmë:

  • Kërko API
  • Shiko pamjet
  • Kërkimi në bazën e të dhënave
  • API-ja e entitetit
  • Pamje
  • UI i shikimeve
  • Mjete
Krijimi i një serveri kërkimi

Shkoni te Konfigurimi > Kërkimi dhe metadata > Kërko API (/admin/config/search/search_api) dhe klikoni Shto server.
Më pas vendosni emrin e serverit, zgjidhni shërbimin e bazës së të dhënave në listën rënëse të klasës së shërbimit dhe ruajeni.

Krijimi i një Indeksi

Shkoni te Konfigurimi > Kërkimi dhe metadata > Kërko API (/admin/config/search/search_api), kliko Shto server (Shto indeksin).
Futni emrin e indeksit, zgjidhni "Material" në fushën "Lloji i artikullit", zgjidhni "Serveri i bazës së të dhënave" në fushën "Server" dhe klikoni "Krijo indeksin".


Në formën që hapet, kontrolloni kutitë me të cilat do të kryhet renditja dhe ruani.
Për të qenë në gjendje të renditni sipas emrit të nyjës, aktivizoni titullin dhe përballë tij në listën rënëse, zgjidhni llojin e vargut, jo tekstin e plotë. Nuk mund të renditësh sipas tekstit të plotë.

Në formën tjetër që u hap, Filters (flow work), lashë gjithçka si parazgjedhje, shkoj te skeda View (Status) dhe kliko Index Now (Index Now).
Pas përfundimit të indeksimit, ne do të krijojmë një faqe kërkimi.

Krijimi i një faqeje kërkimi

Shkoni te Struktura > Shikimet dhe klikoni Shto pamje të re.
Në pamjen e re, në listën rënëse Show, zgjidhni indeksin që krijuam më parë, plotësoni fushat e mbetura (emri, titulli dhe shtegu) sipas nevojës.


Më pas, klikoni Vazhdo dhe modifikoni dhe konfiguroni pamjen si zakonisht. Në kriteret e filtrimit, shtova duke treguar vetëm materialet e publikuara dhe llojin e dëshiruar të nyjës dhe konfigurova shfaqjen e fushave të nevojshme (duhet t'i shtoni këto fusha në indeks në mënyrë që të mund të filtroheni sipas tyre).

Në këtë fazë kemi mbaruar me vendosjen e pamjes, tani le të kalojmë drejtpërdrejt te filtri i aspektit.

A/search_api_ranges.module +++ b/search_api_ranges.module @@ -144.11 +144.8 @@ funksion search_api_ranges_minmax($variables, $order = "ASC") ( // përndryshe min/max do të ishte gjithmonë i barabartë me hyrjen e përdoruesit. = &$query->getFilter()->getFilters(); foreach ($filters as $key => $filter) ( - - // Kontrollo për grup: filtrat e stilit të vjetër janë objekte që mund t'i kapërcejmë. - if (is_array ($filter)) ( - if ($filter == $variablas["range_field"] || ($filter != $variables["range_field"] && $filter == "")) ( - $current_filter = $filtra [$key]; + if(isset($filter->etiketat) && is_array($filter->etiketat))( + if(in_array("facet:".$variables["range_field"], $filter->etiketat ))( unset($filters[$key]); ) )

Rregullimi i rrëshqitësit të ndërfaqes së JQuery: vendosja e një ridrejtimi

Në versionin 7x-1.5 të modulit, hasa në faktin se nëse miniaplikacioni i rrëshqitësit ndodhej në një faqe tjetër përveç faqes së kërkimit, atëherë pas ndryshimit të diapazonit të çmimeve, drejtimi u ridrejtua në faqen aktuale dhe jo në kërkim faqe.
Gabimi qëndron në funksion search_api_ranges_block_slider_view_form_submit()(skedar search_api_ranges.module, rreshti 364).
Nuk shikova vërtet se çfarë ishte atje dhe pse, thjesht ndryshova pak kodin në linjën 427:

Drupal_goto ($rrugë, grup ("query" => grup ($params), "gjuhë" => $gjuhë)); + drupal_goto($values["rruga"], array("query" => grup($params), "gjuhë" => $gjuhë));

pas së cilës problemi u zgjidh.

( "pyetje": ( "dhe": [ ( "terms": ("vend": ["be", "fr"]) ), ( "terms": ("kategori": ["libra", "filma ""])) ])))

Për numëruesit, ne mund të përdorim grumbullime të integruara nga Elasticsearch. Secila nga dy aspektet ruhet si një fushë e vetme në indeks, kështu që ne mund të përdorim grumbullimin e termave në secilën prej këtyre fushave. Agregacioni do të kthejë një numërues për vlerën e kësaj fushe.

( "pyetje": ( "dhe": [ ( "terms": ("vend": ["be", "fr"]) ), ( "terms": ("kategori": ["libra", "filma " "]) ) ]), "agregacione": ( "vendet": ( "termet": ("fusha": "vend")), "kategoritë": ("termet": ("fusha": "kategoria" )))))

Nëse do të ekzekutonit këtë pyetje, do të vini re se numëruesit janë të çaktivizuar. Dy vendet e pazgjedhura, Portugalia dhe Brazili, kanë numërues 0. Edhe pse ka rezultate reale nëse duam t'i zgjedhim (për shkak të skajit ORinner). Kjo ndodh sepse, si parazgjedhje, Elasticsearch kryen grumbullimet e tij në grupin e rezultateve. Kjo do të thotë që nëse zgjidhni Francën, filtrat e vendit tjetër do të kenë një rezultat 0 sepse grupi i rezultateve përmban vetëm artikuj nga Franca.

Për ta rregulluar këtë, duhet t'i themi Elasticsearch që të kryejë grumbullimin në të gjithë grupin e të dhënave, duke injoruar pyetjen. Ne mund ta bëjmë këtë duke i përcaktuar grupimet tona si globale.

( "pyetje": ( "dhe": [ ( "terms": ("vend": ["be", "fr"]) ), ( "terms": ("kategori": ["libra", "filma " "]) ) ]), "agregacione": ( "të gjitha_produktet": ( "globale": (), "agregacione": ( "vendet": ( "termet": ("fusha": "vend")), " kategoritë": ( "termet": ("fusha": "kategoria") ) ) ) )

Nëse thjesht do ta bënim këtë, numëruesit tanë do të ishin gjithmonë të njëjtë, sepse ata gjithmonë do të mbështeteshin në të gjithë grupin e të dhënave, pavarësisht nga filtrat tanë. Njësitë tona duhet të bëhen pak më komplekse, që kjo të funksionojë duhet t'u shtojmë filtra atyre. Çdo grumbullim duhet të mbështetet në një grup të dhënash me të gjithë filtrat e aplikuar, përveç filtrave të tij. Kështu, grumbullimi sipas llogarisë në Francë mbështetet në grupin e të dhënave me filtrin e kategorisë të aplikuar, por jo në filtrin e vendit:

( "pyetje": ( "dhe": [ ( "terms": ("vend": ["be", "fr"]) ), ( "terms": ("kategori": ["libra", "filma " "]) ) ]), "agregacione": ( "të gjitha_produktet": ( "global": (), "agregacione": ( "vendet": ( "filtri": ( "dhe": [ ( "kushtet": ( "category": ["libra","filma"]) ) ] ), "agregations": ( "filtered_countries": ( "terms": ("fusha": "country") ) ) ), "categories": ( "filter": ( "dhe": [ ( "terms": ("vend": ["be","fr"]) ]), "agregacione": ( "filtered_categories": ( "terms": ( "fusha": "kategoria") ) ) ) ) ) )

( "mori": 153, "time_out": false, "_shards": ( "total": 5, "i suksesshëm": 5, "dështoi": 0), "goditje": ( "total": 3, "max_score" ": 0, "hits": ["..."]), "agregacione": ( "të gjitha_produktet": ( "numri_dokumenti": 21, "kategoritë e filtruara": ( "numri_dokumenti": 13, "kategoritë": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "kova": [ ( "kyç": "filma", "doc_count": 6 ), ( "kyç": "muzikë", "doc_count": 4 ), ( "kyç": "libra", "count_doc": 3 ) ) ), "filtered_countries": ( "doc_count": 15, "countries": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "kova": [ ( "çelësi": "fr", "count_doc": 6 ), ( "çelës": "br", "llogari_doc": 4 ), ( "çelës": "be", "llogari_doc": 3 ), ( "key": "pt", "doc_count": 2 ) ) ) ) ) )

Frame Yii2 $terms = QueryHelper::terms("categories.name" , "kategoria ime" ); $nested = QueryHelper:: mbivendosur ("string_facet" , QueryHelper:: filtër ([ QueryHelper:: term ("string_facet.facet_name" , [ "value" => $id , "boost" => 1 ] ), QueryHelper:: termi ("string_facet.facet_value" , ​​[ "value" => $value, "boost" => 1 ]) , ] ) ); $filter = QueryHelper::duhet ($nested) ;

Në mësimin e sotëm, ne do të përpiqemi të rikrijojmë një imitim të kërkimit të aspekteve duke përdorur Javascript. Unë supozoj se ju tashmë e dini se çfarë është kërkimi me anë të kërkimit nëse po lexoni këtë tutorial, përndryshe kërkoni në Google ose shikoni Amazon ose Demon time.

Së pari na duhet biblioteka github.com/eikes/facetedsearch. Shkarkoni atë dhe lidhni skedarin facetedsearch.js me projektin tonë. Do të na duhen gjithashtu bibliotekat jQuery dhe Underscore.

Mohim përgjegjësie: E kuptoj që JQ nuk është më një tortë, por e përdor si sheqer sintaksor të njohur, mund ta rishkruash për bibliotekat më të njohura për ty ose në vanilje JS.

Pra, së pari, le të bëjmë një shënim të thjeshtë me varësi të lidhura:

Dokumenti // Këtu do të shfaqim filtrat e aspekteve // ​​Dhe këtu do të jenë elementët tanë

Tani duhet të përshkruajmë cilësimet e aplikacionit tonë dhe të krijojmë një shabllon për shfaqjen e elementeve të grupit që do t'i renditim duke përdorur aspekte:

$(funksion())( var item_template = // Përshkruani shabllonin "" + " " class="img-responsive">" + ", " + "

" + "" + ", " + ", " + "

" + "

" + ""; cilësimet = ( artikuj: shembull_artikuj, aspekte: ( // Specifikoni kategoritë e aspekteve "kategori" : "Çfarë kategorie", "kontinent" : "Cili kontinent", "gjuhë" : "Gjuhë programimi"), Zgjedhësi i rezultateve: "#results", // Elementi DOM ku shfaqim rezultatet facetSelector: "#facets", // Elementi DOM për aspektet resultTemplate: item_template, paginationCount: 8, // Numri i elementeve për faqe orderByOptions: ("emri": " Emri ", "mbiemri": "Mbiemri", "kategoria": "Kategoria", "RANDOM": "Random"), facetSortOption: ("kontinenti": ["Amerika e Veriut", "Amerika e Jugut"]) ) $. facetelize(cilësimet); ));

Epo, në të vërtetë krijoni vetë një grup JSON me elementë për t'u shfaqur në kërkimin tonë të aspekteve në JS:

Var artikuj = [ ( "emri": "Mary", "mbiemri": "Smith", "imageURL": "http://lorempixel.com/150/150/cats/2", "përshkrim": "Sed Ea Amet. Stet Voluptua. Nonumy Magna Takimata ", "kategoria": "Miu", "gjuha": ["Smalltalk", "XSLT"], "kontinenti": "Afrika"), ("emri": "Patricia" ", "mbiemri": "Johnson", "imageURL": "http://lorempixel.com/150/150/cats/3", "përshkrim": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Sit Lorem Amet. Ipsum Rebum ." , "kategori": "Luan", "kontinent": "Amerika e Veriut", ... ];

Unë do ta vendos këtë grup në një skedar të veçantë JS që do të gjenerohej në mënyrë dinamike, për shembull nga një bazë të dhënash.

Kjo është e gjitha, ne marrim një kërkim të thjeshtë në JavaScript dhe mund ta personalizojmë atë. Më pas, unë jap dokumentacionin e përkthyer të bibliotekës, ku mund të shihni shkaktarët që ju nevojiten.

Karakteristikat e dokumentacionit

Dy funksione eksportohen në hapësirën e emrave jQuery.

facetelize Përdoret për të inicializuar një kërkim me fytyra me cilësimet e dhëna.

facetUpdate Mund të përdoret nëse dëshironi të ndryshoni gjendjen e kërkimit të aspektit nga jashtë.

Cilësimet e objektit

artikuj: Një grup artikujsh që do të filtrohen dhe renditen gjatë procesit.

aspektet: Një objekt, çelësat e të cilit korrespondojnë me çelësat dhe vlerat e elementeve është kreu për atë aspekt. Artikujt do të filtrohen në bazë të vlerës që kanë për këta çelësa.

orderByOptions: Ngjashëm me aspektet, përveç se këto çifte çelës-vlerë përdoren vetëm për renditje. Kur aktivizohet tasti RANDOM, rezultatet mund të randomizohen.

facetSelector: Ky është një përzgjedhës që përdoret për të gjetur një nyje DOM nga e cila përzgjidhen filtrat e aspekteve.

resultSelector: Ky është një përzgjedhës që përdoret për të gjetur nyjen DOM ku shfaqen rezultatet.

resultTemplate: Një varg që përdoret nga motori i modelit Underscore për të dhënë çdo element nga grupi i artikujve. Secilit element i shtohen atributet e mëposhtme, të cilat mund të përdoren gjithashtu në shabllon: batchItemNr, batchItemCount dhe totalItemCount.

gjendje: Ky objekt ruan filtrat aktualë, rendit: aktualRezultati dhe të tjerët. Ju mund të jepni një varg orderBy ose një objekt filtri për t'i paracaktuar ato.

enablePagination: Boolean për të aktivizuar pagifikimin dhe butonin "load more", është i paracaktuar në true .

PaginationCount: Nëse paginatori është i aktivizuar, cakton numrin e elementeve për faqe, parazgjedhja është 50.

facetSortOption: Përdoreni këtë funksion për të ndryshuar rendin e elementeve të aspektit. Merr një objekt, çelësat e të cilit korrespondojnë me emrat dhe vlerat e aspekteve në një grup vlerash të aspekteve, të cilat mund të renditen sipas renditjes që dëshironi të jenë. Ky shembull do t'i rendit kontinentet në një rend tjetër, duke shtuar artikujt që nuk përfshihen në grup sipas rendit alfabetik:

FacetSortOption: ("kontinent": ["Amerika e Veriut", "Amerika e Jugut"])

Ka disa modele të tjera të disponueshme, ju lutemi shikoni kodin burimor facetedsearch.js për të parë të gjitha opsionet e disponueshme të shabllonit.

Ngjarjet

Mund të lidheni me disa ngjarje të cilat duhet të dërgojnë njoftime kur kanë ndodhur disa veprime. Për ta bërë këtë, ne përdorim sistemin e ngjarjeve jquery:

facetuicreated: Ju mund ta lidhni këtë funksion me elementin settings.facetSelector DOM i cili duhet të njoftohet kur të jetë krijuar UI.

facetedsearchresultupdate: Mund ta lidhni këtë funksion me elementin settings.resultSelector DOM për t'u njoftuar për rezultatet e përditësimit.

facetedsearchfacetclick: Kjo ngjarje aktivizohet kur një aspekt klikohet dhe aktivizohet në elementin settings.facetSelector. E cila merr si argument id-në e aspektit.

facetedsearchorderby: Kjo ngjarje aktivizohet kur elementi i renditjes klikohet në elementin settings.facetSelector. Merr si argument urdhrin e ID-së.

$(settings.resultSelector).bind("facetedsearchresultupdate", funksion())( // bëj diçka, ndoshta ));

Në këtë artikull (niveli i webmasterit - i avancuar) do të flasim për të ashtuquajturat ndërthurje në mënyra të ndryshme. lundrim "faceted". Për ta bërë më të lehtë mësimin e materialit, ju rekomandoj të kaloni nëpër artikullin e Wikipedia-s "Klasifikimi i aspekteve" dhe botimi në anglisht (por me fotografi!) "Dizajnoni navigim më të mirë të faqeve për faqet tuaja të internetit".

Lundrimi i rrafshët që filtron sipas ngjyrave ose gamës së çmimeve mund të jetë i dobishëm për vizitorët tuaj, por shpesh dëmton rezultatet e kërkimit sepse krijon kombinime të shumta URL me përmbajtje të kopjuar. Për shkak të dublikatave, motorët e kërkimit nuk do të jenë në gjendje të skanojnë shpejt faqen për përditësime të përmbajtjes, gjë që ndikon në përputhje me rrethanat në indeksimin. Për të minimizuar këtë problem dhe për të ndihmuar webmasterët që të bëjnë kërkimin e navigimit të thjeshtë, ne dëshirojmë të:

Ideale për përdoruesit dhe kërkimin në Google

Pastro shtegun për në faqet e produkteve/artikujve:

Përfaqësimi i URL-së për faqen e kategorisë:
http://www.example.com/category.php?category=gummy-candies

Përfaqësimi specifik i URL-së së produktit:
http://www.example.com/product.php?item=swedish-fish

Dublikata të padëshiruara të shkaktuara nga lundrimi me fytyra

E njëjta faqe është e aksesueshme nga adresa të ndryshme të internetit:

Faqe kanonike



URL: shembull.com/product.php? artikull = peshk suedez

Faqe e kopjuar



URL:example.com/product.php? artikull=peshk-suedez&category=karamele me çamçakëz&çmimi=5-10


kategori=gommy-karamele&shije=kosi&çmimi=5-10

Gabimet:

  • E pakuptimtë për Google pasi përdoruesit rrallë kërkojnë për [marmelatë me çmim 9:55 dollarë].
  • E pakuptimtë për zvarritësit e uebit, të cilët do të gjejnë të njëjtin artikull ("sallatë frutash") nga faqet e kategorisë mëmë (qoftë "Jummy" ose "Sour Gummy").
  • Një pikë negative për pronarin e faqes, sepse kërkesat e indeksimit janë të holluara me versione të shumta të së njëjtës kategori.
  • Një pikë negative për pronarin e faqes, sepse është e padobishme dhe një ngarkesë shtesë në gjerësinë e brezit të faqes
Faqe të zbrazëta:


URL: shembull.com/category.php? kategori=bummy-karamele&shije=i thartë&çmimi=mbi 10

Gabimet:

  • Kodi për motorët e kërkimit është kthyer gabimisht (në këtë rast, faqja duhet të kthejë një kod 404)
  • Faqe e zbrazët për përdoruesit


Zgjidhjet më të këqija (jo miqësore për kërkimin) për navigimin me aspekte

Shembulli nr. 1: Parametrat jo standardë përdoren si pjesë e URL-së: presje dhe kllapa, në vend të kësaj çelësi=vlera&:

  • shembull.com/category? [ kategori: gommy-karamele ][ renditje:çmim i ulët në të lartë ][ sid:789 ]
  • shembull.com/category?category , gummy-candy , sort , lowtohigh , sid , 789
Si të:
shembull.com/category?category=gommy-candy&sort=low-to-high&sid=789

Shembulli #2: Përdorimi i drejtorive ose shtigjeve të skedarëve në vend të parametrave në listat e vlerave që nuk ndryshojnë përmbajtjen e faqes:
shembull.com/c123 /s789/ produkt?swedish-fish
(ku kategoria /c123/, ID e sesionit /s789/, e cila nuk ndryshon përmbajtjen e faqes)

Vendim i mirë:

  • example.com /gummy-candy/ product?item=swedish-fish&sid=789 (drejtoria, /gummy-candy/, ndryshon përmbajtjen e faqes në një mënyrë kuptimplote)
Vendimi më i mirë:
  • shembull.com/product?item=swedish-fish&category=gummy-candy&sid=789 (Parametrat e URL-së japin fleksibilitet më të madh për motorët e kërkimit për të përcaktuar se si të zvarriten në mënyrë efektive)
Është e vështirë për zvarritësit të dallojnë vlerat e dobishme (të tilla si "gumë-karamele") nga ato të padobishme (të tilla si "SESSIONID") kur këto vlera vendosen drejtpërdrejt në shtigjet e lidhjes. Nga ana tjetër, parametrat e URL-së ofrojnë fleksibilitet që motorët e kërkimit të testojnë dhe të përcaktojnë shpejt kur një vlerë e caktuar nuk kërkon qasje të zvarritësit në të gjitha opsionet.

Vlerat e zakonshme që nuk ndryshojnë përmbajtjen e faqes dhe duhet të renditen si parametra URL përfshijnë:

  • ID e sesionit
  • Ndjekja e ID-së
  • ID-të e referuesit
  • Vula kohore
Shembulli #3: Konvertimi i vlerave të krijuara nga përdoruesi (ndoshta të pafundme) në parametra URL që janë të zvarritshëm dhe të indeksueshëm, por të padobishëm për kërkim.
Përdorimi i të dhënave të vogla të krijuara nga përdoruesit e sajtit (si p.sh. gjatësia/gjërësia gjeografike ose "ditë më parë") në adresat e zvarritura dhe të indeksuara:
  • shembull.com/find-a-doctor? rrezja=15&gjerësia=40.7565068&gjatësia=-73.9668408
  • shembull.com/article?category=shëndeti& days-ago=7
Si të:
  • shembull.com/find-a-doctor?city=san-francisco&neighborhood=soma
  • shembull.com/articles?category=health&date=january-10-2014
Në vend që të lejoni përdoruesin të gjenerojë vlera për të krijuar URL të zvarritshme (që rezulton në mundësi të pafundme me shumë pak vlerë për vizitorët), është më mirë të publikoni një kategori faqesh për vlerat më të njohura, përveç kësaj mund të përfshini informacion shtesë për bëjnë që faqja të japë më shumë vlerë sesa një faqe e rregullt kërkimi me rezultate. Përndryshe, mund të konsideroni vendosjen e vlerave të krijuara nga përdoruesi në një direktori të veçantë dhe më pas përdorimin e robots.txt për të parandaluar zvarritjen nga ajo direktori.
  • shembull.com/filtering/ find-a-doctor?radius=15&latitude=40.7565068&longitude=-73.9668408
  • shembull.com/filtering/ articles?category=health&days- ago=7
Dhe në robots.txt:
Agjenti i përdoruesit: *
Mos lejo: /filtrimi/

Shembulli nr. 4. Shtimi i parametrave të URL-së pa logjikë.

  • shembull.com/gummy-candy/lollipops/gummy-candy/gummy-candy/product?swedish-fish
  • shembull.com/product?cat=gummy-candy&cat=lollipops&cat=gummy-candy &cat=gummy-candy&item=swedish-fish
Vendim i mirë:
  • shembull.com /gummy-candy/ product?item=swedish-fish
Vendimi më i mirë:
  • shembull.com/product?item=swedish-fish&category=gummy-karamele
Parametrat e jashtëm të URL-së rrisin vetëm dyfishimin, duke bërë që faqja të zvarritet dhe indeksohet me më pak efikasitet. Prandaj, është e nevojshme të hiqni qafe parametrat e panevojshëm të URL-së dhe të pastroni periodikisht lidhjet e padëshiruara përpara se të gjeneroni URL të reja. Nëse nevojiten shumë parametra për një sesion përdoruesi, ju mund ta fshehni informacionin në një cookie në vend që të shtoni vazhdimisht vlera si cat=gummy-candy&cat=lollipops&cat=gummy-candy&...

Shembulli #5: Sugjeroni përmirësime të mëtejshme (filtrim) kur ka rezultate të pavlefshme.

Keq:
Lejoni përdoruesit të zgjedhin filtra kur ka artikuj të pavlefshëm për t'u rafinuar.


Sqarim në një faqe me rezultate zero (për shembull, çmimi=mbi 10), i cili frustron përdoruesit dhe shkakton kërkesa të panevojshme për motorët e kërkimit.

Si të:
Krijo lidhje vetëm kur ka elementë që përdoruesi duhet të zgjedhë. Nëse rezultati është zero, lidhja shënohet "gri" (d.m.th., e paklikueshme). Për të përmirësuar më tej përdorshmërinë, merrni parasysh përfshirjen e një treguesi të numrit të artikujve të disponueshëm pranë çdo filtri.


Shfaqja e një faqeje me rezultate zero (për shembull, çmimi=mbi-10) nuk lejohet, plus përdoruesve u ndalohet të bëjnë klikime të panevojshme dhe motorët e kërkimit ndalohen të zvarriten këtë faqe jo të dobishme.

Është e nevojshme të parandaloni shfaqjen e adresave të panevojshme dhe të minimizoni hapësirën për vizitorin duke krijuar URL vetëm kur produktet janë të disponueshme. Kjo do të ndihmojë në mbajtjen e përdoruesve të angazhuar në faqen tuaj (më pak klikime në butonin e pasme kur nuk gjenden produkte) dhe do të zvogëlojë numrin e URL-ve të mundshme të njohura për motorët e kërkimit. Për më tepër, nëse një faqe nuk është thjesht "përkohësisht e pa magazinë", por nuk ka gjasa të përmbajë ndonjëherë informacion përkatës, mund të mendoni t'i jepni një kod përgjigjeje 404. Në faqen tuaj 404, mund të krijoni një mesazh të dobishëm për përdoruesit me më shumë opsione në navigim ose një kuti kërkimi në mënyrë që përdoruesit të mund të gjejnë produkte të lidhura.

Për faqet e reja, webmasterët e të cilëve po shqyrtojnë zbatimin e navigimit të aspekteve, ka disa opsione për optimizimin e zvarritjes (grupi i adresave në faqen tuaj të njohur për Google) të faqeve të përmbajtjes unike dhe reduktimin e faqeve të kopjuara nga futja në indeksin e motorit të kërkimit (konsolidimi i indeksimit sinjale).

Përcaktoni se cilat parametra URL kërkohen për motorët e kërkimit për të zvarritur secilën faqe të përmbajtjes individuale (d.m.th., përcaktoni se cilat parametra nevojiten për të krijuar të paktën një shteg klikimi për çdo artikull). Parametrat e kërkuar mund të përfshijnë item-id, kategori-id, faqe etj.

Përcaktoni se cilët parametra do të jenë të dobishëm për vizitorët me pyetjet e tyre dhe cilët ka të ngjarë të shkaktojnë dyfishim në zvarritje dhe indeksim. Në shembullin e ëmbëlsirave (marmelatë), parametri URL "shije" mund të jetë i vlefshëm për përdoruesit me pyetje në shembullin shije=sour. Megjithatë, është logjike të merret në konsideratë parametri "çmimi" për të shkaktuar dyfishim të panevojshëm të kategorisë=gomë-karamele&shije=kosi&price=mbi 10 . Shembuj të tjerë të zakonshëm:

  • Parametrat e vlefshëm për motorët e kërkimit: item-id , kategori-id , emri , marka ...
  • Parametrat e panevojshëm: sesioni-id, diapazoni i çmimeve ...
Le të shohim zbatimin e një prej disa opsioneve të konfigurimit për URL-të që përmbajnë parametra të panevojshëm. Vetëm sigurohuni që parametrat "të panevojshëm" të URL-së të mos kërkohen në të vërtetë që zvarritësit e motorëve të kërkimit të zvarriten ose që përdoruesi të gjejë çdo produkt individual!

Opsioni 1: dhe lidhjet e brendshme

Shënoni të gjitha URL-të e panevojshme me . Kjo do të zvogëlojë kostot e punës së robotit të kërkimit dhe do të parandalojë një ulje të frekuencës së zvarritjes. Ju duhet ta menaxhoni skanimin globalisht përmes robots.txt (Shënimi i përkthyesit: shih artikullin " ").
Përdorni atributin rel="canonical" për të ndarë faqet për indeksin e kërkimit nga faqet që nuk nevojiten atje (për shembull, në çmimin e faqes=5-10 mund të shtoni atributin rel="canonical", duke treguar kategorinë e të gjithëve shembull marmelatë e thartë.com/category.

Opsioni 2: Robots.txt dhe Disallow

URL-të me parametra të panevojshëm përfshihen në drejtorinë /filtering/, e cila do të mbyllet në robots.txt (disallow). Kjo do t'i lejojë të gjithë motorët e kërkimit të zvarriten vetëm "të saktë" në lidhjen (përmbajtjen) e faqes, por do të bllokojë zvarritjen e URL-ve të padëshiruara menjëherë. Për shembull (example.com/category.php?category=gummy-candies), nëse parametrat e vlefshëm ishin artikulli, kategoria dhe shija, dhe ID-ja dhe çmimi i sesionit ishin të panevojshëm, atëherë URL-ja për shije do të ishte si kjo:
example.com/category.php?category=gommy-candies&taste=sour , por të gjithë parametrat e panevojshëm, si çmimi, do të përfshihen në URL-në në një drejtori të paracaktuar - /filtering/:
shembull.com/filtering/category.php?category=gommy-candies&price=5-10,
të cilat më pas do të ndalohen nëpërmjet robots.txt:
Agjenti i përdoruesit: *
Mos lejo: /filtrimi/

Opsioni 3: Pritës të veçantë

Sigurohuni që zgjidhjet më të mira të listuara më sipër (për shembull për adresat e panevojshme) të zbatohen ende. Përndryshe, motorët e kërkimit tashmë kanë formuar një masë të madhe lidhjesh në indeks. Kështu, puna juaj do të synojë të zvogëlojë rritjen e mëtejshme të faqeve të panevojshme të zvarritura nga Googlebot dhe të konsolidojë sinjalet e indeksimit.

Përdorni parametra me kodim standard dhe formatin çelës=vlerë.

Sigurohuni që vlerat që nuk ndryshojnë përmbajtjen e faqes, të tilla si ID-të e sesioneve, zbatohen si çelës=vlerë dhe jo si drejtori.

Mos lejoni klikime ose gjeneroni URL kur nuk ka elementë për të filtruar.

Shtoni logjikën në hartën e parametrave të URL-së: hiqni parametrat e panevojshëm në vend që të shtoni vazhdimisht vlera (p.sh. shmangni gjenerimin e lidhjeve si kjo: shembull.com/product?cat=gummy-candy&cat=lollipops &cat=gummy-candy&item=swedish-fish ).

Ruani parametrat e vlefshëm në URL duke i renditur ato në fillim (pasi URL-të janë të dukshme në rezultatet e kërkimit) dhe parametrat më pak të rëndësishëm të fundit (për shembull, ID-ja e sesionit).
Shmangni këtë strukturë lidhjeje: shembull.com/category.php?session-id=123&tracking-id=456 &category=gommy-candies&taste=sour
Konfiguro parametrat e URL-së në Veglat e Uebmasterit nëse keni një kuptim të qartë se si funksionojnë lidhjet në faqen tuaj.

Sigurohuni që kur përdorni JavaScript për të manipuluar në mënyrë dinamike përmbajtjen (rendit/filtro/fsheh) pa përditësuar URL-në, në faqen tuaj ka adresa të vërteta uebi që kanë vlerë kërkimi, të tilla si faqet e kategorisë kryesore dhe produktit, të cilat janë të zvarritshme dhe të indeksueshme. Mundohuni të mos përdorni vetëm faqen kryesore (d.m.th. një URL) për të gjithë faqen tuaj, por përmes JavaScript për të ndryshuar dinamikisht përmbajtjen me navigim - kjo, për fat të keq, do t'u japë përdoruesve vetëm një URL në kërkime. Përveç kësaj, kontrolloni që performanca të mos ndikojë në performancën e filtrimit dinamik për keq, pasi do të ndërhyjë në aftësinë e përdoruesit për të punuar me sitin.

Përmirësoni indeksimin e faqeve të ndryshme me të njëjtën përmbajtje duke specifikuar atributin rel="canonical" në versionin e privilegjuar të faqes. Atributi rel="canonical" mund të përdoret brenda një ose më shumë domenesh.

Optimizoni indeksimin e përmbajtjes së faqezuar (për shembull, faqe=1 dhe faqe=2 nga kategoria "karamele të shijshme") duke:

  • Shtoni një atribut rel="canonical" në një seri faqesh që tregojnë kategorinë kanonike me parametrin "view-all" (për shembull, faqe=1, faqe=2 dhe faqe=3 nga kategoria "karamele gome" me me rel=”canonical” në kategori=gummy-candies&page=all ), duke u siguruar që faqja të jetë e përshtatshme për përdoruesit dhe të ngarkohet shpejt.
  • Përdorni shënjimin e faqeve rel="next" dhe rel="prev" për të treguar lidhjen midis faqeve individuale (shih artikullin "Paginaton me rel="next" dhe rel="prev" ").
Përfshini vetëm lidhje kanonike në hartat tuaja të faqes.

Artikujt më të mirë mbi këtë temë