Moderni ljudi sve manje vremena pokušavaju potrošiti na kupovinu. Spori katalozi proizvoda tjeraju kupce, trgovina gubi kupce i dio zarade. Učinite svoju online trgovinu privlačnijom s tehnologijom facet Facet - tj. unaprijed definiran.
traži. Izradite fasetirane indekse i značajno ubrzajte pretragu proizvoda i rad cijelog kataloga. Napomena: Fasetirani mehanizam pretraživanja dostupan je od verzije 15.0.1 modula Information Blocks i integriran je s komponentom Komponenta je programski kod
, dizajniran u vizualnoj ljusci, obavljajući specifičnu funkciju modula za prikaz podataka u javnom dijelu. Možemo umetnuti ovaj blok koda na web-stranice bez izravnog pisanja koda. Pametni filtar Komponenta priprema filtar za odabir iz informacijskog bloka i prikazuje obrazac filtra za elemente filtriranja. Komponenta mora biti spojena prije komponente za prikaz kataloških elemenata, inače se popis elemenata neće filtrirati. Komponenta je standardna, uključena u distribuciju modula i sadrži tri predloška: .default , visual_horizontal i visual_vertical . (Posljednja dva predloška nisu podržana, ostaju radi održavanja kompatibilnosti.) U vizualnom uređivaču komponenta se nalazi duž staze.
Sadržaj > Katalog > Pametni filter
Saznajte više o fasetiranom pretraživanju Pogledajmo primjer:
|
Ako postavite fasetirano pretraživanje, tada se kreiraju gotovi skupovi proizvoda za pretraživanje za određenu vrijednost svojstva (fasetirani indeksi), tj. opcije za moguće zahtjeve Na primjer, crvena majica kratkih rukava, svi crni pamučni proizvodi, haljine veličine XS itd. u pametnom filtru izračunavaju se unaprijed i rezultat se prikazuje odmah. Ova vrsta pretraživanja proizvoda puno je brža.
Fasetirani indeksi ponovno se stvaraju automatski ili ih trebate ponovno ručno izraditi, ovisno o izvršenim radnjama:
|
Fasetirano pretraživanje poboljšava izvedbu kataloga proizvoda. Za korištenje vam je potrebno:
Ugrađeno fasetirano pretraživanje Ugrađeno u proizvod Fasetirano pretraživanje ugrađeno u internetsku trgovinu - interno pretraživanje - radi brzo u mnogim aspektima i ne opterećuje sustav.
Klijentu se trenutno prikazuju unaprijed pripremljeni rezultati pretraživanja - za bilo koju kombinaciju parametara - aspekt. Sustav unaprijed izračunava aspekte za proizvod - sva moguća sjecišta tih svojstava u filtru. Ovi gotovi setovi za pretraživanje se zatim izdaju klijentima. Zašto se stranica ne učitava? U trenutku kada se rezultat izda klijentu, nema kalkulacija, jer je rezultat već spreman. Faseta za novi proizvod kreira se odmah kada se doda u prodajni katalog. Pretraživanje se automatski ponovno indeksira na temelju novih proizvoda i novih nekretnina. Prednosti za klijente Prednosti fasetirane pretrage Vaš klijent vrlo brzo pronalazi proizvod, lako se igrajući s postavkama filtera. Klijent ne čeka i rezultate dobiva odmah. Brzina pretraživanja ne ovisi o broju artikala u katalogu.
Vaš klijent vrlo brzo pronalazi proizvod dosljednim sužavanjem upita za pretraživanje. I na svakom koraku odmah dobiva rezultate - popis proizvoda na zahtjev. Ne mora čekati da se njegov zahtjev obradi. Jer sustav je sve unaprijed izračunao moguće opcije, i jednostavno izdaje praznine. Postupno, online trgovina prikazuje sve manje i manje proizvoda kao rezultate. Ovi proizvodi sve su bliži zahtjevima kupaca. Interaktivnost i višedimenzionalnost Odabir proizvoda za kupca je kao igra. Klijent povlači parametre (cijena, težina), mijenja svojstva (boja, veličina), postavlja dodatne uvjete (marka, materijal, okus, itd.) - a sustav odmah preuređuje rezultate. U ovom slučaju može biti koliko god želite prilagodljivih parametara - njihov broj ne utječe na brzinu generiranja rezultata. Praktičnost i ljubaznost Uz fasetiranu navigaciju, čak i neiskusan korisnik može lako odabrati proizvod u trgovini. Manipuliranje alatima za pretraživanje vrlo je zgodno. Osim toga, sustav od kupca traži sve parametre po kojima može izabrati proizvod. Trgovina, takoreći, demonstrira klijentu glavna svojstva proizvoda. Klijent ne čeka na obradu zahtjeva! Brzina pretraživanja Brzina pretraživanja je važna Brzina pretraživanja utječe na broj obavljenih kupnjiNišta ne iritira kupca više od problema s pronalaženjem proizvoda na vašoj web stranici. Klijent će otići u druge trgovine ako predugo traži. Čak i ako vaša trgovina sadrži veliki izbor proizvode i mnoge alate za njihovo filtriranje. Klijent možda neće dobiti rezultate zahtjeva.
Zašto je pretraga tako spora?
Brzo i bez "fasete"! Proizvod neprestano radi na ubrzanju samih komponenti kataloga. Usluga “Site Speed” pokazuje značajno povećanje brzine od verzije do verzije! Rekonstrukcija Provodi se stalna rekonstrukcija indeksiranja i rezultata pretraživanja. Algoritam za indeksiranje sadržaja se prerađuje i ubrzava. Kvaliteta prezentacije rezultata pretraživanja je poboljšana - posebno je smanjen "šum". Programeri planiraju prikazati personalizirane podatke za trenutnog klijenta u rezultatima pretraživanja. Za programere: Transparentnost API-ja
Potpuna integracija s pametnim filtrom Sada, kada postavljate postavke u administrativnom dijelu, za svojstva proizvoda ne možete samo označiti aktivnost - želite li ili ne sudjelovati u pametnom filteru. Prosljeđivanjem svojstva pametnom filtru možete odmah odabrati kako ih prikazati. U kojem obliku bi se nekretnina trebala prikazati klijentima: gumbi, veličine, klizači, padajuće liste, liste s odabirom boja itd.
Pametni filter sada izgleda ljepše. Programeri mogu jednostavno prilagoditi i dodatno prilagoditi njegov izgled. U današnjoj lekciji pokušat ćemo ponovno stvoriti imitaciju fasetirane pretrage pomoću Javascripta. Pretpostavljam da već znate što je fasetirano pretraživanje ako čitate ovaj vodič, u suprotnom ga proguglajte ili pogledajte Amazon ili moj Demo. Prvo trebamo biblioteku github.com/eikes/facetedsearch. Preuzmite ga i povežite datoteku facetedsearch.js s našim projektom. Također će nam trebati biblioteke jQuery i Underscore. Odricanje od odgovornosti: razumijem da JQ više nije kolač, ali ga koristim kao poznati sintaktički šećer, možete ga prepisati za vama poznatije biblioteke ili u vanilla JS. Dakle, prvo, napravimo jednostavno označavanje s povezanim ovisnostima: Dokument // Ovdje ćemo prikazati fasetirane filtre // I ovdje će biti naši elementi Sada trebamo opisati postavke naše aplikacije i izraditi predložak za prikaz elemenata niza koje ćemo sortirati pomoću faseta: $(function())( var item_template = // Opišite predložak "" + " " class="img-responsive">" + ", " + " " + "" + ""; postavke = ( stavke: example_items, aspekti: ( // Navedite kategorije aspekta "category" : "Koja kategorija", "continent" : "Koji kontinent", "language" : "Programski jezik")), selektor rezultata: "#results", // DOM element gdje prikazujemo rezultate facetSelector: "#facets", // DOM element za facete resultTemplate: item_template, paginationCount: 8, // Broj elemenata po stranici orderByOptions: ("firstname": " First name ", "lastname": "Prezime", "category": "Kategorija", "RANDOM": "Nasumično"), facetSortOption: ("kontinent": ["Sjeverna Amerika", "Južna Amerika"]) ) $. facetelize (postavke);Pa, zapravo stvorite sam JSON niz s elementima za prikaz u našem pretraženom pretrazi u JS-u: Var items = [ ( "firstname": "Mary", "lastname": "Smith", "imageURL": "http://lorempixel.com/150/150/cats/2", "description": "Sed Ea Amet. Stet Voluptua. Nonumy Magna Takimata", "kategorija": "Miš", "jezik": ["Smalltalk", "XSLT"], "kontinent": "Afrika" ("ime": "Patricia ", "prezime": "Johnson", "URL slike": "http://lorempixel.com/150/150/cats/3", "opis": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Sit Lorem Ipsum Rebum ." , "kategorija": "Lav", "kontinent": "Sjeverna Amerika", ... ]; Ja bih ovaj niz stavio u zasebnu JS datoteku koja bi se dinamički generirala, na primjer iz baze podataka. To je sve, dobivamo fasetirano pretraživanje u JavaScriptu i možemo ga prilagoditi. Zatim pružam prevedenu dokumentaciju biblioteke, gdje možete vidjeti okidače koji su vam potrebni. Značajke dokumentacijeDvije funkcije se izvoze u jQuery imenski prostor. facetelize Koristi se za pokretanje fasetirane pretrage s danim postavkama. facetUpdate Može se koristiti ako želite eksterno promijeniti stanje pretraživanja faceta. Postavke objektastavke: Niz stavki koje će se filtrirati i sortirati u procesu. aspekti: Objekt čiji ključevi odgovaraju ključevima i vrijednostima elementa je zaglavlje za taj aspekt. Stavke će se filtrirati na temelju vrijednosti koju imaju za ove ključeve. orderByOptions: Slično aspektima, osim što se ovi parovi ključ-vrijednost koriste samo za sortiranje. Kada je tipka RANDOM omogućena, rezultati se mogu nasumično raspoređivati. FasetSelector: Ovo je selektor koji se koristi za pronalaženje DOM čvora iz kojeg se odabiru filteri faseta. Selektor rezultata: Ovo je selektor koji se koristi za pronalaženje DOM čvora gdje se prikazuju rezultati. resultTemplate: Niz koji koristi predložak Underscore za renderiranje svakog elementa iz niza stavki. Sljedeći atributi dodani su svakom elementu, koji se također mogu koristiti u predlošku: batchItemNr, batchItemCount i totalItemCount. stanje: Ovaj objekt pohranjuje trenutne filtre, sortira: currentResult i druge. Možete dati niz orderBy ili objekt filtera da ih unaprijed postavite. enablePagination: Booleova vrijednost za omogućavanje paginacije i gumba "učitaj više", zadana vrijednost true . paginationCount: Ako je paginator omogućen, postavlja broj elemenata po stranici, zadano je 50. facetSortOption: Koristite ovu funkciju za promjenu redoslijeda elemenata faceta. Uzima objekt čiji ključevi odgovaraju imenima i vrijednostima aspekata u niz vrijednosti aspekata, koji se mogu rasporediti redoslijedom kojim želite. Ovaj primjer sortirat će kontinente drugačijim redoslijedom, dodajući stavke koje nisu uključene u polje abecednim redom: FacetSortOption: ("kontinent": ["Sjeverna Amerika", "Južna Amerika"]) Dostupno je još nekoliko predložaka, pogledajte izvorni kod facetedsearch.js da biste vidjeli sve dostupne opcije predložaka. DogađajiMožete se vezati za neke događaje koji bi trebali slati obavijesti kada se neke radnje dogode. Da bismo to učinili koristimo jquery sustav događaja: facetuicreated: ovu funkciju možete povezati s DOM element settings.facetSelector koji bi trebao biti obaviješten kada se izradi korisničko sučelje. facetedsearchresultupdate: ovu funkciju možete povezati s DOM elementom settings.resultSelector kako biste bili obaviješteni o rezultatima ažuriranja. facetedsearchfacetclick: Ovaj događaj se pokreće kada se klikne na aspekt i aktivira se na elementu settings.facetSelector. Koji prima id aspekta kao argument. facetedsearchorderby: Ovaj se događaj pokreće kada se klikne element sortiranja na element settings.facetSelector. Uzima redoslijed ID-a kao argument. $(settings.resultSelector).bind("facetedsearchresultupdate", function())( // učini nešto, možda )); Brzo smo pogledali instalaciju i osnovnu sintaksu PINQ-a, priključka LINQ-a na PHP. U ovom ćemo članku pogledati kako koristiti PINQ za simulaciju značajke fasetnog pretraživanja u MySQL-u. U ovom članku nećemo pokriti sve aspekte fasetnog pretraživanja. Zainteresirani mogu potražiti odgovarajuće informacije na internetu. Tipično fasetirano pretraživanje funkcionira ovako:
Fasetirano pretraživanje prilično je popularno i moćan alat koji se može vidjeti na gotovo svim web stranicama e-trgovine. Nažalost, fasetirano pretraživanje nije ugrađeno u MySQL. Dakle, što bismo trebali učiniti ako još uvijek koristimo MySQL, ali želimo korisniku dati ovu priliku? S PINQ-om, koji ima sličan, snažan i jednostavan pristup, možemo postići isto ponašanje kao da koristimo druge motore baza podataka. Proširenje demo iz prvog dijelaNapomena: sav kod iz ovog dijela, kao i iz prvog dijela, nalazi se u repozitoriju. U ovom ćemo članku proširiti demonstraciju iz 1. dijela sa značajnim poboljšanjem u obliku faceted pretraživanja. Počnimo s index.php dodavanjem sljedeće retke: $app->get("demo2", function () use ($app) ( global $demo; $test2 = new pinqDemo\Demo($app); return $test2->test2($app, $demo->test1 ($aplikacija)); $app->get("demo2/facet/(key)/(value)", funkcija ($key, $value) use ($app) ( global $demo; $test3 = new pinqDemo\Demo($app); return $test3->test3($app, $demo->test1($app), $key, $value )); Prva ruta nas vodi na stranicu za pregled svih unosa koji odgovaraju traženju ključna riječ. Kako bi primjer bio jednostavan, odabiremo sve knjige iz tablice book_book. Također će prikazati rezultirajući skup podataka i skup poveznica za određivanje kriterija pretraživanja. U stvarnim aplikacijama, nakon klika na takve poveznice, svi filtri aspekta prilagodit će se graničnim vrijednostima dobivenog skupa podataka. Korisnik će tako moći sekvencijalno dodavati nove uvjete pretraživanja, na primjer, prvo odabrati proizvođača, zatim odrediti raspon cijena itd. Ali u ovom primjeru nećemo implementirati ovo ponašanje - svi će filtri odražavati granične vrijednostiizvornog skupa podataka. Ovo je prvo ograničenje i prvi kandidat za poboljšanje u našoj demonstraciji. Kao što možete vidjeti u gornjem kodu, stvarne funkcije nalaze se u drugoj datoteci pod nazivom pinqDemo.php. Pogledajmo odgovarajući kod koji pruža značajku fasetiranog pretraživanja. Klasa aspektaPrvo, kreirajmo klasu koja predstavlja aspekt. Općenito, aspekt treba sadržavati nekoliko svojstava:
Grupiranje je najkritičniji dio aspekta. Sve skupne informacije koje aspekt može vratiti ovise o kriterijima grupiranja. Obično su najčešće korišteni kriteriji pretraživanja "Cijeli niz", "Dio niza" ili "Raspon vrijednosti". Prostor imena classFacet ( koristite Pinq\ITraversable, Pinq\Traversable; class Facet ( public $data; // Izvorni skup podataka public $key; // polje po kojem se grupira javni $type; // F: cijeli red; S: početni nizovi ; R: public $range; // igra ulogu samo ako $type != F ... public function getFacet() ($filter = ""; if ($this->type == "F") / / cijeli red ( ... ) elseif ($this->type == "S") // početak retka ( ... ) elseif ($this->type == "R") // raspon vrijednosti ( $ filter = $this->data ->groupBy(function($row) ( return floor($row[$this->key] / $this->range) * $this->range; )) -> select(function (ITraversable $data) ( return ["key" => $data->last()[$this->key], "count" => $data->count()]; )); return $ filtar; ) ) ) Glavna funkcija ove klase je vraćanje filtriranog skupa podataka na temelju izvornog skupa podataka i svojstava aspekta. Iz zakonika je jasno da za različite vrste koriste se računi razne načine grupiranje podataka. U gornjem kodu pokazali smo kako bi kod mogao izgledati ako grupiramo podatke prema rasponu vrijednosti u koracima navedenim u $range. Postavljanje aspekta i prikaz izvornih podatakaJavna funkcija test2($app, $data) ( $facet = $this->getFacet($data); return $app["twig"]->render("demo2.html.twig", array("facet" = > $facet, "data" => $data)); privatna funkcija getFacet($originalData) ( $facet = array(); $data = \Pinq\Traversable::from($originalData); // 3 različita primjera stvaranja objekte aspekta i vrati aspekte $filter1 = new \classFacet\Facet($data, "author", "F" $filter2 = new \classFacet\Facet($data, "title", "S", 6)); ; $filter3 = new \classFacet($data, "price", "R", $facet[$filter1->key] = $filter2->getFacet(); ); $facet[$filter3->key] = $filter3->getFacet(); U metodi getFacet() radimo sljedeće:
U većini slučajeva filtri će biti prikazani kao linija i vodit će vas do prikaza filtriranog rezultata. Već smo izradili rutu ("demo2/facet/(ključ)/(vrijednost)") za prikaz rezultata pretraživanja s aspektima i filtriranje veza. Ruta uzima dva parametra, ovisno o ključu po kojem se filtrira i vrijednosti za taj ključ. Ispod je prikazana funkcija test3 koja je vezana za ovu rutu: Test javne funkcije3($app, $originalData, $key, $value) ( $data = \Pinq\Traversable::from($originalData); $facet = $this->getFacet($data); $filter = null; if ($key == "author") ( $filter = $data ->where(function($row) use ($value) ( return $row["author"] == $value; )) ->orderByAscending( function($row) use ($key) ( return $row["price"]; )) ) elseif ($key == "price") ( ... ) else //$key== naslov ( .. . ) return $app["twig"]->render("demo2.html.twig", array("facet" => $facet, "data" => $filter) ) U osnovi, ovisno o ključu, primjenjujemo filtriranje (anonimna funkcija u naredbi where) prema proslijeđenoj vrijednosti i dobivamo sljedeći skup filtriranih podataka. Također možemo postaviti redoslijed filtriranja podataka. Na kraju, prikazujemo neobrađene podatke (zajedno s filtrima) u predlošku. Ova ruta koristi isti obrazac koji smo koristili u "demo2". Traka za pretraživanje
Moramo zapamtiti da su aspekti koje generira naša aplikacija ugniježđeni nizovi. Na prvoj razini, to je niz svih aspekata, au našem slučaju tri su (autor, naslov, cijena). Svaki aspekt ima polje ključ-vrijednost, tako da ga možemo iterirati koristeći uobičajene metode. Primijetite kako gradimo URL-ove za naše veze. Koristimo i ključ vanjske petlje (k) i ključeve unutarnje petlje (vv.key) kao parametre za rutu ("demo2/facet/(ključ)/(vrijednost)"). Veličina nizova (vv.count) koristi se za prikaz u predlošku. Prva slika prikazuje izvorni skup podataka, a druga slika je filtrirana prema rasponu cijena od 0 do 10 USD i razvrstana po autoru. Sjajno, uspjeli smo simulirati fasetirano pretraživanje u našoj aplikaciji! Prije dovršetka ovog članka, moramo konačno pogledati naš primjer i odrediti što se može poboljšati i koja ograničenja imamo. Moguća poboljšanjaOpćenito, ovo je vrlo jednostavan primjer. Upravo smo prošli osnovna sintaksa i koncepte te ih implementirao kao radni primjer. Kao što je prethodno navedeno, imamo nekoliko područja koja bi se mogla poboljšati radi veće fleksibilnosti. Moramo implementirati kriterije pretraživanja "preklapanja", budući da nas trenutni primjer ograničava na mogućnost primjene filtriranja pretraživanja samo na izvorni skup podataka; ne možemo primijeniti fasetirano pretraživanje na već filtrirani rezultat. Ovo je najveći napredak koji mogu zamisliti. OgraničenjaFasetno pretraživanje implementirano u ovom članku ima ozbiljna ograničenja (koja se također mogu primijeniti na druge implementacije fasetnog pretraživanja): Svaki put dohvaćamo podatke iz MySQL-a Ova aplikacija koristi okvir Silex. Kao i svaki okvir s jednom ulaznom točkom kao što su Silex, Symfony, Laravel, njegova datoteka index.php (ili app.php) se poziva svaki put kada se ruta analizira i izvršavaju se funkcije kontrolera. Ako pogledate kôd u našem index.php, primijetit ćete da sljedeći redak koda: $demo = novi pinqDemo\Demo($app); poziva se svaki put kad se prikaže stranica aplikacije, što znači da se svaki put izvode sljedeće linije koda: Demonstracija razreda ( privatne $books = ""; javna funkcija __construct($app) ( $sql = "odaberite * iz redoslijeda book_book po ID-u"; $this->books = $app["db"]->fetchAll($sql ;) Hoće li biti bolje ako ne koristimo framework? Pa, unatoč činjenici da razvoj aplikacija bez okvira nije dobra ideja, mogu reći da ćemo naići na iste probleme: podaci (i stanje) se ne spremaju između različitih HTTP zahtjevi. Ovo je temeljna karakteristika HTTP-a. Ovo se može izbjeći korištenjem mehanizama predmemoriranja. Neke smo sačuvali SQL upiti koristeći aspekte. Umjesto prosljeđivanja jednog upita odabira za dohvaćanje podataka i tri grupna upita s odgovarajućim klauzulama where, pokrenuli smo samo jedan upit where i upotrijebili PINQ za dobivanje agregiranih informacija. ZaključakU ovom smo dijelu implementirali mogućnost fasetnog pretraživanja zbirke knjiga. Kao što sam rekao, ovo je samo mali primjer, koji ima prostora za poboljšanje, a koji ima niz ograničenja. U ovom članku (razina webmastera - napredni) govorit ćemo o tzv. intersectingu na različite načine. "fasetirana" navigacija. Kako biste pojednostavili asimilaciju materijala, preporučujem da prođete kroz članak Wikipedije "Klasifikacija aspekata" i publikacije na Engleski jezik(ali sa slikama!) "Dizajnirajte bolju fasetiranu navigaciju za svoje web stranice." Fasetirana navigacija s filtriranjem po boji ili Raspon cijena može biti koristan za vaše posjetitelje, ali je često štetan u pretraživanju zbog činjenice da stvara mnogo kombinacija adresa s dvostrukim sadržajem. Zbog duplikata tražilice neće moći brzo skenirati stranicu za ažuriranje sadržaja, što posljedično utječe na indeksiranje. Kako bismo umanjili ovaj problem i pomogli webmasterima da fasetirano navigacijsko pretraživanje učine ugodnijim, željeli bismo: Idealno za korisnike i Google pretraživanje Čisti put do stranica proizvoda/članaka: URL prikaz za stranicu kategorije: Predstavljanje URL-a specifičnog za proizvod: Neželjeni duplikati uzrokovani fasetiranom navigacijom Ista stranica dostupna je s različitih web adresa: Kanonska stranica URL: example.com/product.php? item=swedish-fish Duplicirana stranica URL:example.com/product.php? item=swedish-fish&category=gumeni-bomboni&price=5-10 kategorija=gumeni-bomboni&okus=kiselo&cijena=5-10 greške:
URL: example.com/category.php? kategorija=gumeni-bomboni&okus=kiselo&cijena=preko-10 greške:
Primjer br. 1: Nestandardni parametri koriste se kao dio URL-a: umjesto toga zarezi i zagrade ključ=vrijednost&:
example.com/category?category=gummy-candy&sort=low-to-high&sid=789 Primjer #2: Korištenje direktorija ili putova datoteka umjesto parametara na popisima vrijednosti koje ne mijenjaju sadržaj stranice: Dobra odluka:
Uobičajene vrijednosti koje ne mijenjaju sadržaj stranice i moraju biti navedene kao URL parametri uključuju:
Korištenje manjih podataka koje su generirali korisnici web-mjesta (kao što je zemljopisna dužina/širina ili "prije dana") u pretraženim i indeksiranim URL-ovima:
Korisnički agent: * Zabrani: /filtriranje/ Primjer br. 4. Dodavanje URL parametara bez logike.
Primjer #5: Predloži daljnje preciziranje (filtriranje) kada postoje nulti rezultati. Loše: Pojašnjenje stranice s nula rezultata (na primjer, cijena=preko-10), što frustrira korisnike i uzrokuje nepotrebne zahtjeve za tražilice. Kako da: Prikazivanje stranice s nula rezultata (na primjer, cijena=preko-10) nije dopušteno, a korisnicima je zabranjeno nepotrebno klikanje, a tražilicama je zabranjeno indeksirati ovu nekorisnu stranicu. Potrebno je spriječiti pojavu nepotrebne adrese i smanjite prostor za posjetitelje stvaranjem URL-ova samo kada su proizvodi dostupni. To će pomoći da korisnici ostanu angažirani na vašoj web-lokaciji (manje klikova na gumb za povratak kada nisu pronađeni proizvodi) i smanjit će broj mogućih URL-ova poznatih tražilicama. Osim toga, ako stranica nije samo "trenutno rasprodana", nego je malo vjerojatno da će ikada sadržavati relevantne informacije, razmislite o tome da joj date kod odgovora 404. Na svojoj stranici 404 možete dizajnirati korisnu poruku za korisnike s više opcija u navigaciji ili okvir za pretraživanje kako bi korisnici mogli pronaći srodne proizvode. Za nove web stranice čiji webmasteri razmatraju implementaciju fasetirane navigacije, postoji nekoliko opcija za optimiziranje indeksiranja (skup adresa na vašoj web lokaciji poznatih Googleu) jedinstvenih stranica sa sadržajem i smanjenje dupliciranih stranica od ulaska u indeks tražilice (konsolidacija indeksiranja signali). Odredite koji su parametri URL-a potrebni tražilicama za indeksiranje svake pojedine stranice sa sadržajem (to jest, odredite koji su parametri potrebni za stvaranje barem jedne putanje klika do svake stavke). Traženi parametri mogu uključivati item-id, category-id, page itd. Odredite koji će parametri biti korisni posjetiteljima s njihovim upitima, a koji će vjerojatno uzrokovati dupliciranje u indeksiranju i indeksiranju. U primjeru slatkiša (marmelada), URL parametar "taste" mogao bi biti vrijedan za korisnike s upitima u primjeru taste=sour. Međutim, logično je uzeti u obzir da parametar "cijena" uzrokuje nepotrebno dupliciranje category=gummy-candies&taste=sour&price=over-10 . Ostali uobičajeni primjeri:
Opcija 1: i interne veze Označite sve nepotrebne URL-ove s . To će smanjiti troškove rada robota za pretraživanje i spriječiti smanjenje učestalosti indeksiranja. Morate globalno upravljati skeniranjem putem robots.txt (napomena prevoditelja: pogledajte članak " "). Opcija 2: Robots.txt i Disallow URL-ovi s nepotrebnim parametrima uključeni su u /filtering/ direktorij, koji će biti zatvoren u robots.txt (disallow). Ovo će svim tražilicama omogućiti indeksiranje samo "ispravne" unutarnje veze (sadržaja) stranice, ali će blokirati indeksiranje neželjenih URL-ova odjednom. Na primjer (example.com/category.php?category=gummy-candies), ako su vrijedni parametri bili stavka, kategorija i okus, a ID sesije i cijena nepotrebni, tada bi URL za okus bio ovakav: Opcija 3: Odvojeni hostovi Uvjerite se da najbolja rješenja, navedene gore (na primjer, za nepotrebne adrese) i dalje vrijede. Inače, tražilice su već formirale veliku masu poveznica u indeksu. Stoga će vaš rad biti usmjeren na smanjenje daljnjeg rasta nepotrebnih stranica koje indeksira Googlebot i konsolidaciju signala indeksiranja. Koristite parametre sa standardnim kodiranjem i formatom ključ=vrijednost. Provjerite jesu li vrijednosti koje ne mijenjaju sadržaj stranice, kao što su ID-ovi sesije, implementirane kao ključ=vrijednost, a ne kao direktoriji. Nemojte dopustiti klikove ili generirati URL-ove kada nema elemenata za filtriranje. Dodajte logiku preslikavanju parametara URL-a: uklonite nepotrebne parametre umjesto stalnog dodavanja vrijednosti (npr. izbjegavajte generiranje veza kao što je ovo: example.com/product?cat=gummy-candy&cat=lollipops &cat=gummy-candy&item=swedish-fish ). Držite vrijedne parametre u URL-u tako da ih navedete prve (budući da su URL-ovi vidljivi u rezultatima pretraživanja), a manje relevantne parametre na kraju (na primjer, ID sesije). Uvjerite se da kada koristeći JavaScript za dinamičko upravljanje sadržajem (sortiranje/filtriranje/sakrij) bez ažuriranja URL-a, postoje stvarne web-adrese na vašem web-mjestu koje imaju vrijednost pretraživanja, kao što su glavne kategorije i stranice proizvoda, koje je moguće indeksirati i indeksirati. Pokušajte ne koristiti samo početna stranica(tj. jedan URL) za cijelu vašu web-lokaciju i korištenje JavaScripta za dinamičku promjenu sadržaja s navigacijom - to će, nažalost, korisnicima dati samo jedan URL u pretraživanjima. Također provjerite nema li učinka na dinamičko filtriranje najgora strana, jer će spriječiti korisnika da radi s web mjestom. Poboljšajte indeksiranje razne stranice jedan sadržaj navođenjem atributa rel="canonical" privilegiranoj verziji stranice. Atribut rel="canonical" može se koristiti unutar jedne ili više domena. Optimizirajte indeksiranje sadržaja paginiranog (na primjer, page=1 i page=2 iz kategorije "gumenih bombona") na jedan od sljedećih načina:
Pročitajte također
|