PINQ - Sorğulanmış məlumat dəstləri. Faset axtarışı. Inline Facet Index JQuery UI Slider Patch: İstiqamətləndirmənin qurulması

( "sorğu": ( "və": [ ( "şərtlər": ("ölkə": ["ol", "fr"]) ), ( "şərtlər": ("kateqoriya": ["kitablar", "filmlər" "]))) ] ))

Sayğaclar üçün biz Elasticsearch-in daxili aqreqatlarından istifadə edə bilərik. İki aspektin hər biri indeksdə bir sahə kimi saxlanılır, ona görə də bu sahələrin hər birində terminlərin birləşməsindən istifadə edə bilərik. Toplama bu sahənin dəyəri üçün sayğac qaytaracaq.

( "sorğu": ( "və": [ ( "şərtlər": ("ölkə": ["ol", "fr"]) ), ( "şərtlər": ("kateqoriya": ["kitablar", "filmlər" "]) ) ] ), "aqreqasiyalar": ( "ölkələr": ( "terminlər": ("sahə": "ölkə") ), "kateqoriyalar": ( "terminlər": ("sahə": "kateqoriya") )))

Bu sorğunu icra etsəniz, sayğacların söndürüldüyünü görərdiniz. Seçilməyən iki ölkənin, Portuqaliyanın və Braziliyanın 0 sayları var. Baxmayaraq ki, biz onları seçmək istəsək, faktiki nəticələr var (və ya daxili kənara görə). Bunun səbəbi, defolt olaraq, Elasticsearch öz toplamalarını nəticə dəstində yerinə yetirməsidir. Bu o deməkdir ki, Fransanı seçsəniz, digər ölkə filtrləri 0 balı olacaq, çünki nəticə dəstində yalnız Fransa elementləri var.

Bunu düzəltmək üçün biz Elasticsearch-a sorğuya məhəl qoymadan bütün verilənlər bazasında aqreqasiyanı yerinə yetirməyi tapşırmalıyıq. Biz bunu klasterlərimizi qlobal olaraq təyin etməklə edə bilərik.

( "sorğu": ( "və": [ ( "şərtlər": ("ölkə": ["ol", "fr"]) ), ( "şərtlər": ("kateqoriya": ["kitablar", "filmlər" "]) ) ] ), "toplamalar": ( "bütün_məhsullar": ( "qlobal": (), "toplamalar": ( "ölkələr": ( "şərtlər": ("sahə": "ölkə") ), " kateqoriyalar": ( "terminlər": ("sahə": "kateqoriya") ) ) ) ) )

Sadəcə bunu etsəydik, sayğaclarımız həmişə eyni olardı, çünki filtrlərimizdən asılı olmayaraq həmişə bütün məlumat dəstinə arxalanırdılar. Aqreqatlarımız bir az daha mürəkkəbləşməlidir, bunun işləməsi üçün onlara filtrlər əlavə etməliyik. Hər bir aqreqasiya özündən başqa bütün filtrlərin tətbiq olunduğu verilənlər bazasına etibar etməlidir. Beləliklə, Fransada hesab üçün aqreqasiya ölkə filtrinə deyil, kateqoriya filtrinin tətbiq olunduğu verilənlər toplusuna əsaslanır:

( "sorğu": ( "və": [ ( "şərtlər": ("ölkə": ["ol", "fr"]) ), ( "şərtlər": ("kateqoriya": ["kitablar", "filmlər" "]) ) ] ), "toplamalar": ( "bütün_məhsullar": ( "qlobal": (), "toplamalar": ( "ölkələr": ( "filtr": ( "və": [ ( "şərtlər": ( "kateqoriya": ["kitablar","filmlər"]) ) ] ), "toplamalar": ( "süzülmüş_ölkələr": ( "terminlər": ("sahə": "ölkə") ) ) ), "kateqoriyalar": ( "filtr": ( "və": [ ( "şərtlər": ("ölkə": ["olmaq","fr"]) ) ] ), "toplamalar": ( "filtered_categories": ( "terms": (" sahə": "kateqoriya") )))

( "aldı": 153, "vaxt bitdi": false, "_shards": ( "cəmi": 5, "uğurlu": 5, "uğursuz": 0 ), "vuruşlar": ( "cəmi": 3, "maksimum_score" ": 0, "hits": ["..."] ), "aqreqasiyalar": ( "bütün_məhsullar": ( "sənəd_hesabı": 21, "süzülmüş kateqoriyalar": ( "sənəd_sayısı": 13, "kateqoriyalar": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ ( "açar": "filmlər", "doc_count": 6 ), ( "açar": "music", "sənəd_sayısı": 4 ), ( "açar": "kitablar", "sənəd_hesabı": 3 ) ] ) ), "filtrlənmiş_ölkələr": ( "sənəd_hesabı": 15, "ölkələr": ( "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ ( "açar": "fr", "doc_count": 6 ), ( "açar": "br", "doc_count": 4 ), ( "açar": "ol", "sənəd_hesabı": 3 ), ( "açar": "pt", "doc_count": 2 ) ] ))) ) )

Yii2 çərçivəsi $terms = QueryHelper::terms("categories.name" , "mənim kateqoriyam" ); $nested = QueryHelper:: nested ("string_facet" , QueryHelper:: filter ([ QueryHelper:: termin ("string_facet.facet_name" , [ "value" => $id , "boost" => 1 ] ) , QueryHelper:: termin ("string_facet.facet_value" , ​​[ "value" => $value , "boost" => 1 ] ) , ] ) ); $filter = QueryHelper:: should ($nested ) ;

Faceted naviqasiya bütün e-ticarət saytları üçün problemdir. Eyni elementin müxtəlif varyasyonları üçün istifadə edilən həddindən artıq sayda səhifə axtarışın effektivliyinə təhlükə yaradır. Bu, SEO-ya mənfi təsir göstərə bilər və istifadəçi təcrübəsi. Faceted naviqasiya nədir və onu necə təkmilləşdirmək olar, SEO Hacker bloqunun mütəxəssisləri bildiriblər.

Faceted naviqasiya: tərif

Bu növ naviqasiya adətən e-ticarət saytlarının yan panellərində tapılır, filtrlər və aspektləri ehtiva edir - istifadəçinin istədiyi kimi konfiqurasiya etdiyi seçimlər. onlayn mağazaların müştərilərinə istifadəçilər ehtiyac duyduqlarını tapana qədər məhsulları süzgəcdən keçirəcək atributların birləşməsindən istifadə edərək istədikləri məhsulu axtarmağa imkan verir.

Fasetlər və filtrlər fərqlidir. Budur fərq:

  • Fasetlər indekslənmiş kateqoriyalardır. Onlar məhsul siyahılarını dəqiqləşdirməyə kömək edir və əsas kateqoriyaların uzantısı kimi çıxış edirlər. Fasetlər istifadəçinin etdiyi hər seçim üçün unikal dəyər əlavə edir. Fasetlər indeksləşdirildiyi üçün, səhifədə bütün vacib atributların olmasını təmin edərək, axtarış sisteminə müvafiq siqnallar göndərməlidirlər.

  • Filtrlər siyahılardakı elementləri çeşidləmək və dəqiqləşdirmək üçün istifadə olunur. Onlar istifadəçilər üçün lazımdır, lakin axtarış motorları üçün deyil. Filtrlər indeksləşdirilmir, çünki onlar səhifənin məzmununu dəyişdirmirlər, sadəcə onu fərqli qaydada çeşidləyirlər. Bu, dublikat məzmuna malik çoxlu URL ilə nəticələnir.

Potensial məsələlər

Hər bir mümkün faset birləşməsinin özünəməxsus URL-i var. SEO baxımından bəzi problemlər yarada bilər. Əsas olanlar bunlardır:

  • Dublikat məzmun.
  • Skanlama üçün büdcə xərcləmək.
  • Bağlantı fərqlərini aradan qaldırın.

Saytınız böyüdükcə dublikat səhifələrin sayı da artır. Daxil olan keçidlər müxtəlif dublikat səhifələrə gedə bilər. Bu, bağlantıların dəyərini azaldır və səhifə sıralama imkanlarını məhdudlaşdırır.

O, həmçinin cannibalizasiya ehtimalını artırır. açar sözlər. Birdən çox səhifə eyni açar sözlər üçün sıralamağa çalışır, nəticədə daha az stabil və daha aşağı reytinqlər əldə edilir. Hər bir açar söz yalnız bir səhifəni hədəfləsəydi, bu problemdən qaçınmaq olar.

Fasetli naviqasiya üçün həllər

Üzlü naviqasiya probleminin həllini seçərkən, son məqsədinizi unutmayın: indeksləşdirilmiş səhifələrin sayını artırın və ya indeksləşdirilməsini istəmədiyiniz səhifələrin sayını azaldın. Budur sizin üçün faydalı ola biləcək bəzi həllər:

AJAX

AJAX istifadə etsəniz, istifadəçi bir faset və ya filtrə kliklədikdə yeni URL yaradılmır. Fasetlərin hər bir mümkün kombinasiyası üçün unikal URL-lər olmadığından, dublikat məzmun problemi, açar sözlərin cannibalizasiyası və indeksləşdirmə xərclərinin xərclənməsi potensial olaraq aradan qaldırılır.

AJAX yalnız e-ticarət saytının işə salınmasından əvvəl təsirli ola bilər. Onsuz da mövcud resursların problemlərini həll etmək üçün istifadə edilmir. Həmçinin, bu üsul sizin tərəfinizdən müəyyən xərclər tələb edir.

noindex etiketi

Noindex teqi botlara müəyyən bir səhifəni indeksdən çıxarmaq üçün istifadə olunur. Buna görə də Google axtarış nəticələrində görünməyəcək. Bu, indeksdə və axtarış nəticələrində görünən dublikat məzmunun miqdarını azaldır.

Bu, tarama büdcəsi məsələlərini həll etməyəcək, çünki botlar hələ də səhifənizi ziyarət edəcək. O, həmçinin link dəyərini paylamağa kömək etmir.

rel = kanonik atribut

Bu atributla siz Google-a indeksləşdirmək və sıralamaq üçün bir əsas üstünlük verdiyiniz səhifənizin olduğunu və həmin səhifədəki bütün digər məzmun versiyalarının sadəcə olaraq indeksləşdirilməsinə ehtiyac olmayan dublikat olduğunu bildirirsiniz.

Sofiya İbrahimova

Məzmun marketoloqu

Saytınızdakı eyni səhifəyə birdən çox URL-dən daxil olmaq olarsa, axtarış motorları hər bir URL-i ayrıca səhifə kimi nəzərdən keçirəcək. Botlar saytınızdakı məzmunun unikal olmadığına qərar verəcək və bu, reytinqə mənfi təsir göstərəcək və SERP-də mövqenizi aşağı salacaq. Bunun qarşısını almaq üçün HEAD blokuna aşağıdakı simvol ardıcıllığını daxil etməklə əsas kanonik səhifəni təyin edin:

Dublikat məzmun problemini həll etmək üçün kanonik səhifələrdən istifadə edə bilərsiniz və paylaşım linki əsas səhifənizlə birləşdiriləcək. Ancaq botların yenə də dublikat səhifələri tarama şansı var və bu, tarama büdcəsinin israfıdır.

Robots.txt

Bəzi səhifələri indeksləşdirmədən bağlamaq sizə nail olmağa imkan verir yaxşı nəticələr. Bu sadə, sürətli və etibarlı yol. Blok etmək istədiyiniz bütün mümkün faset və filtr birləşmələrini təyin etmək üçün fərdi seçim qurmaq ən əlverişlidir. Onu gizlətmək istədiyiniz hər bir URL-in sonuna daxil edin (http://tam səhifə ünvanı/robots.txt) və ya səhifə kodunun HEAD sahəsində Robotlar meta teqindən istifadə edin.

URL-i dəyişdirərkən xatırlamaq lazımdır ki, robotların bu dəyişiklikləri fərq etməsi və onlara reaksiya verməsi 3-4 həftə çəkir.

Burada da müəyyən problemlər var. Bağlantıların dəyəri məhdud olacaq, həmçinin xarici keçidlərin olması səbəbindən bloklanmış URL indeksləşdirilə bilər.

Konsol Google axtarış

Bu, daha yaxşı və daha rahat naviqasiya sistemi qurmaq üzərində işləyərkən problemlərinizi müvəqqəti həll etmək üçün əla bir yoldur. Google Axtarış Konsolundan istifadə edərək axtarış sisteminə saytınızı necə taramaq lazım olduğunu söyləyə bilərsiniz.

  • Daxil olun hesab konsolu açın və "Skanlama" bölməsini seçin (Tarama):

  • "URL Parametrləri" düyməsini basın:

  • Parametrlərinizin hər birinin səhifəyə təsirini və Google-un bu səhifələrlə necə davranacağını göstərin.

Unutmayın ki, bu üsul yalnız Google tarayıcılarından dublikat məzmunu gizlədir. Bing və Yahoo səhifələri hələ də görünəcək.

Faceted naviqasiyanı necə təkmilləşdirmək olar

Düzgün üzlü naviqasiya yaratmağa imkan verən bütün üsulları qısaca nəzərdən keçirək:

  • AJAX istifadə
  • Heç bir məzmunu olmayan kateqoriyalara və ya filtr səhifələrinə keçidləri silin və ya gizləyin.
  • Yüksək axtarış həcminə malik olan müəyyən faset birləşmələrinin indeksləşdirilməsinə icazə verin
  • Kateqoriyalar və alt kateqoriyalardakı çörək qırıntıları vasitəsilə sayt iyerarxiyasını qurun.
  • Dublikat məzmun üçün kanonik (əsas) səhifələrin yaradılması.
  • rel = "next" və rel = "prev" ilə səhifə işarələməsindən istifadə edərək komponent səhifələrindən bütün sıraya indeksləşdirmə xassələrinin konsolidasiyası.
Nəticə

Qeyd olunan həllərin hər birinin öz üstünlükləri və mənfi cəhətləri var. Universal bir həll yoxdur, hamısı işinizin xüsusiyyətlərindən və konkret vəziyyətdən asılıdır. Optimallaşdırılmış üzlü naviqasiya saytınıza daha geniş açar sözləri hədəf almağa imkan verəcək. Riskdən qaçmaq üçün naviqasiyanın təkcə axtarış robotlarının tələblərinə cavab vermədiyinə, həm də istifadəçi təcrübəsi baxımından rahat olduğuna əmin olun.

Müasir insan alış-verişə getdikcə daha az vaxt sərf etməyə çalışır. Yavaş məhsul kataloqları müştəriləri dəf edir, mağaza müştərilərini və qazancının bir hissəsini itirir. Faceted texnologiya ilə onlayn mağazanızı daha cəlbedici edin əvvəlcədən təyin edilmiş. axtarış. Üzlü indekslər yaradın və məhsulların axtarışını və bütün kataloqun işini əhəmiyyətli dərəcədə sürətləndirin.

Qeyd: Fasetli axtarış mexanizmi İnformasiya Blokları modulunun 15.0.1 versiyasından mövcuddur və Komponent komponenti ilə inteqrasiya olunub - bu, məlumatları İctimaiyyətdə göstərmək üçün modulun xüsusi funksiyasını yerinə yetirən vizual qabıq kimi hazırlanmış proqram kodudur. Hissə. Bu kod blokunu birbaşa kod yazmadan sayt səhifələrinə yerləşdirə bilərik. Ağıllı filtr Komponent infoblokdan seçmək üçün filtr hazırlayır və elementləri süzmək üçün filtr formasını göstərir. Komponent kataloq elementinin çıxış komponentindən əvvəl birləşdirilməlidir, əks halda elementlərin siyahısı filtrlənməyəcək. Komponent standartdır, modulun paylama dəstinə daxildir və üç şablondan ibarətdir: .default , visual_horizontal və visual_vertical . (Son iki nümunə dəstəklənmir və uyğunluq səbəbi ilə buraxılır.)

IN vizual redaktor komponent yol boyu yerləşir Məzmun > Kataloq > Ağıllı Filtr.

Komponent İnformasiya Blokları moduluna aiddir.

Faceted axtarış haqqında ətraflı məlumat əldə edin

Bir misala baxaq:

Onlayn mağazaya gedirik və filtrdə qırmızı köynək lazım olduğunu seçirik:

  • Fərqli axtarış olmadan, filtr "T-shirt" məhsulunu "Qırmızı" rəng xüsusiyyətinə uyğunlaşdırmaq üçün məhsulların bütün siyahısında təkrarlamağa başlayacaq və bu, çox sayda məhsulla çox vaxt aparacaq;
  • Üzlü bir axtarış qurarsanız, malların hazır axtarış dəstləri müəyyən bir əmlak dəyəri (üzlü indekslər) ilə yaradılır, yəni. mümkün istəklər, məsələn, qırmızı köynək, bütün qara pambıq əşyalar, XS ölçülü paltarlar və s. smart filterdə əvvəlcədən hesablanır və nəticə dərhal verilir. Bu məhsul axtarışı daha sürətli işləyir.

Bir neçə sadə addımda üzlü indekslər yaradaq:

Mən üzlü indeksləri yenidən yaratmalıyam?

Faceted indekslər avtomatik olaraq yenidən yaradılır və ya yerinə yetirilən hərəkətlərdən asılı olaraq onları əl ilə yenidən yaratmalısınız:

Avtomatik olaraq Yeni və ya redaktə edilmiş mövcud məhsullar əlavə edildi.
yeni xüsusiyyətlər yaratmayın.
Manual Sistem sizə səhifələrin yuxarı hissəsində bir mesaj göndərəcək
inzibati bölmə.
Yeni və ya redaktə edilmiş kataloq bölmələri əlavə edildi.
Ağıllı filtrdən yenisini əlavə edərkən və ya əmlakı çıxararkən.
Malları boşaltarkən, məsələn, 1C-dən, əgər mallar yeni xüsusiyyətlər yaradırsa.

Faceted axtarış məhsul kataloqunun işini yaxşılaşdırır. Onu istifadə etmək üçün sizə lazımdır:

  • Məhsul kataloqu üçün üzlü indekslər yaratmaq;
  • İndeksləri əl ilə yenidən qurmaq ehtiyacı ilə bağlı xəbərdarlığa baxın.
  • Bugünkü dərsimizdə Javascript-dən istifadə edərək simulyasiya edilmiş üzlü (fasetli) axtarışı yenidən yaratmağa çalışacağıq. Demək istəyirəm ki, siz bu təlimatı oxumaqla üzlü axtarışın nə olduğunu artıq bilirsiniz, əks halda google-a daxil olun və ya amazon və ya demomu yoxlayın.

    Əvvəlcə github.com/eikes/facetedsearch kitabxanasına ehtiyacımız var. Onu endirin və facetedsearch.js faylını layihəmizə daxil edin. Bizə jQuery və Underscore kitabxanaları da lazım olacaq.

    İmtina: Mən başa düşürəm ki, JQ artıq tort deyil, amma mən onu adi sintaktik şəkər kimi istifadə edirəm, siz onu daha tanış kitabxanalara və ya vanil JS-ə kəsə bilərsiniz.

    Beləliklə, əvvəlcə əlaqəli asılılıqlarla sadə bir işarələmə edək:

    Sənəd // Burada üzlü filtrləri göstərəcəyik // Burada bizim elementlərimiz olacaq

    İndi tətbiqimizin parametrlərini təsvir etməliyik və fasetlərdən istifadə edərək çeşidləyəcəyimiz massiv elementlərini göstərmək üçün şablon yaratmalıyıq:

    $(function()( var item_template = // "" + " şablonunun təsviri " class="img-responsive">" + ", " + "

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

    " + "

    " + ""; settings = ( maddələr: misal_maddələr, fasetlər: ( // "kateqoriya" faset kateqoriyalarının təyin edilməsi: "Hansı Kateqoriya", "qitə" : "Hansı Qitə", "dil" : "Proqramlaşdırma Dili" ), nəticə Seçici: "#results", // Nəticələri göstərdiyimiz DOM elementi facetSelector: "#facets", // Fasetlər üçün DOM elementi resultTemplate: item_template, paginationCount: 8, // Hər səhifə üçün elementlərin sayı orderByOptions: ("firstname": " Ad ", "soyad": "Soyad", "kateqoriya": "Kateqoriya", "TƏSƏFÜD": "Təsadüfi"), facetSortOption: ("kontinent": ["Şimali Amerika", "Cənubi Amerika"]) ) $. facetelize(parametrlər); ));

    Yaxşı, əslində JSON massivinin özünü JS-də üzlü axtarışımızda göstərmək üçün elementlərlə yaradın:

    Var maddələr = [ ( "ad": "Məryəm", "soyad": "Smith", "imageURL": "http://lorempixel.com/150/150/cats/2", "təsvir": "Sed Ea Amet. Stet Voluptua. Nonumy Magna Takimata ", "kateqoriya": "Siçan", "dil": ["Smalltalk", "XSLT"], "kontinent": "Afrika"), ( "ad": "Patricia" ", "soyad": "Johnson", "imageURL": "http://lorempixel.com/150/150/cats/3", "description": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Sit Lorem Amet. Ipsum Rebum ." , "kateqoriya": "Aslan", "qitə": "Şimali Amerika"), ... ];

    Verilmiş massiv Mən onu, məsələn, verilənlər bazasından dinamik şəkildə formalaşacaq ayrı bir JS faylına qoyardım.

    Hamısı budur, biz JavaScript-də üzlü axtarış əldə edirik və biz onu fərdiləşdirə bilərik. Sonra, sizə lazım olan tetikleyicileri görə biləcəyiniz kitabxananın tərcümə edilmiş sənədlərini təqdim edirəm.

    Sənədləşdirmə Xüsusiyyətləri

    İki funksiya jQuery ad sahəsinə ixrac olunur.

    facetelize Verilmiş parametrlərlə üzlü axtarışı başlamaq üçün istifadə olunur.

    facetUpdate Faset axtarış vəziyyətini kənardan dəyişmək istəyirsinizsə istifadə edilə bilər.

    Obyekt parametrləri

    elementlər: Prosesdə süzülməli və çeşidlənəcək elementlər massivi.

    Fasetlər: Düymələri element açarlarına və dəyərlərinə uyğun gələn obyekt bu fasetin başlığıdır. Elementlər həmin açarlar üçün hansı dəyərə malik olduğuna görə filtrlənəcək.

    orderByOptions: Fasetlərə bənzər, bu açar/dəyər cütləri istisna olmaqla, yalnız çeşidləmə üçün istifadə olunur. RANDOM açarı aktiv olduqda, nəticələr təsadüfi ola bilər.

    facetSelector: Bu, faset filtrlərinin seçildiyi DOM nodeunu tapmaq üçün istifadə edilən seçicidir.

    resultSelector: Bu, nəticələrin göstərildiyi DOM nodeunu tapmaq üçün istifadə edilən seçicidir.

    resultTemplate: Maddələr massivindən hər bir elementi göstərmək üçün Alt Çizgi şablon mühərriki tərəfindən istifadə edilən sətir. Şablonda da istifadə oluna bilən hər bir elementə aşağıdakı atributlar əlavə olunur: batchItemNr , batchItemCount və totalItemCount .

    dövlət: Bu obyekt cari filtrləri saxlayır, çeşidləyir: currentResult və başqaları. Onları əvvəlcədən konfiqurasiya etmək üçün orderBy sətri və ya filtrlər obyekti təqdim edə bilərsiniz.

    enablePagination: paginalor və "daha çox yükləmə" düyməsini aktivləşdirmək üçün Boolean, defolt olaraq doğrudur.

    paginationCount: Səhifələşdirmə aktivdirsə, hər səhifəyə elementlərin sayını təyin edir, standart 50-dir.

    facetSortOption: Faset elementlərinin sırasını dəyişmək üçün bu funksiyadan istifadə edin. Düymələrin faset adlarına və dəyərlərə uyğun olduğu obyekti görmək istədiyiniz ardıcıllıqla düzülə bilən faset dəyərləri massivinə aparır. Bu nümunə qitələri fərqli ardıcıllıqla sıralayacaq, massivdə olmayan elementlər əlifba sırası ilə əlavə olunacaq:

    FacetSortOption: ("qitə": ["Şimali Amerika", "Cənubi Amerika"])

    Daha bir neçə şablon var, hamısını görmək üçün facetedsearch.js mənbə koduna baxın mövcud variantlarşablon.

    Hadisələr

    Siz bəzi tədbirlər baş verdikdə bildiriş göndərməli olan bəzi hadisələri bağlaya bilərsiniz. Bunun üçün jQuery hadisə sistemindən istifadə edirik:

    facetuicreated: Siz bu funksiyanı DOM elementi settings.facetSelector ilə əlaqələndirə bilərsiniz və bu UI yaradılan zaman xəbərdar edilməlidir.

    facetedsearchresultupdate: Yeniləmə nəticələrindən xəbərdar olmaq üçün bu funksiyanı settings.resultSelector DOM elementinə bağlaya bilərsiniz.

    facetedsearchfacetclick: Bu hadisə faset kliklədikdə və settings.facetSelector elementində işə salındıqda işə salınır. Hansı ki, faset identifikatorunu arqument kimi alır.

    facetedsearchorderby: Bu hadisə, settings.facetSelector elementində çeşidləmə elementi kliklədikdə işə salınır. O, arqument kimi şəxsiyyət vəsiqəsi sifarişini alır.

    $(settings.resultSelector).bind("facetedsearchresultupdate", function()( // nəsə etmək, bəlkə də ));

    Bu yazıda (webmaster səviyyəsi - qabaqcıl), biz sözdə müxtəlif yollarla kəsişən haqqında danışacağıq. üzlü naviqasiya. Materialın mənimsənilməsini asanlaşdırmaq üçün mən Wikipedia məqaləsini nəzərdən keçirməyi məsləhət görürəm "Facet təsnifatı" və nəşrlər Ingilis dili(lakin şəkillərlə!) "Veb saytlarınız üçün daha yaxşı yönlü naviqasiya dizayn edin ".

    Rəng və ya qiymət diapazonuna görə süzgəcdən keçirilmiş üzlü naviqasiya ziyarətçiləriniz üçün faydalı ola bilər, lakin çox vaxt dublikat məzmunlu çoxsaylı ünvan kombinasiyaları yaratmaqla axtarışa zərər verir. Dublikatlara görə Axtarış motorları onlar müvafiq olaraq indeksləşdirməyə təsir edən məzmun yeniləmələri üçün saytı tez bir zamanda skan edə bilməyəcəklər. Bu problemi minimuma endirmək və veb ustalarına üzlü naviqasiyanı axtarışa uyğunlaşdırmağa kömək etmək üçün biz istərdik:

    İstifadəçilər və Google axtarışı üçün idealdır

    Məhsullara/məqalə səhifələrinə gedən yolu təmizləyin:

    Kateqoriya səhifəsi üçün URL-i təmsil edən:
    http://www.example.com/category.php?category=gummy-condies

    Müəyyən bir məhsul üçün URL-i təmsil etmək:
    http://www.example.com/product.php?item=swedish-fish

    Üzlü naviqasiyanın səbəb olduğu arzuolunmaz dublikatlar

    Eyni səhifəyə müxtəlif internet ünvanlarından daxil olmaq mümkündür:

    Kanonik səhifə



    URL: example.com/product.php? maddə = isveç-balıq

    Dublikat səhifə



    URL:example.com/product.php? item=isveç-balıq&kateqoriya=saqqızlı-şirniyyat&qiymət=5-10


    kateqoriya=saqqızlı-şirniyyatlar&dad=turş&qiymət=5-10

    Səhvlər:

    • Google üçün məntiqli deyil, çünki istifadəçilər nadir hallarda [9:55 dollar marmelad] axtarırlar.
    • Tarayıcıların eyni elementi ("meyvə salatı") əsas kateqoriya səhifələrindən ("Qummi" və ya "Turşu saqqızı") tapması mənasızdır.
    • Sayt sahibi üçün mənfi məqam, çünki indeksləşdirmə sorğuları eyni kateqoriyanın bir neçə versiyası ilə seyreltilir.
    • Sayt sahibi üçün mənfi bir məqam, çünki bu, faydasız və lazımsız bir yükdür bant Sayt
    Boş səhifələr:


    URL: example.com/category.php? kateqoriya=saqqızlı konfetlər&dad=turş&qiymət=10-dan çox

    Səhvlər:

    • Axtarış motorları üçün səhv verilmiş kod (bu halda səhifə 404 kodunu verməlidir)
    • İstifadəçilər üçün boş səhifə


    Üzlü naviqasiya üçün ən pis (axtarışa uyğun olmayan) həllər

    Nümunə №1: URL-də qeyri-standart parametrlər istifadə olunur: vergüllər və mötərizələr, əvəzinə açar=dəyər&:

    • example.com/category? [ kateqoriya: saqqızlı-konfet ][ çeşidləmə:qiyməti aşağıdan yuxarıya ][ sid:789 ]
    • example.com/category?category , gummy-condy , sort , lowtohigh , sid , 789
    Necə:
    example.com/category?category=gummy-candy&sort=low-to-high&sid=789

    Nümunə №2: Səhifənin məzmununu dəyişdirməyən dəyərlər siyahısında seçimlər əvəzinə qovluqlardan və ya fayl yollarından istifadə:
    example.com/c123/s789/product?swedish-fish
    (burada /c123/ kateqoriyadır, /s789/ seans identifikatorudur və səhifənin məzmununu dəyişmir)

    Yaxşı qərar:

    • example.com /gummy-candy/ product?item=swedish-fish&sid=789 (kataloq, /gummy-condy/, səhifənin məzmununu mənalı şəkildə dəyişir)
    Ən yaxşı qərar:
    • example.com/product?item=swedish-fish&category=gummy-candy&sid=789 (URL parametrləri axtarış motorlarına effektiv şəkildə taramanın yollarını müəyyən etmək üçün daha çox çeviklik verir)
    Bu dəyərlər birbaşa keçid yolunda yerləşdirildikdə, taramaçılar üçün faydalı dəyərləri (məsələn, "saqqızlı konfet") yararsız dəyərlərdən (məsələn, "SESSIONID") fərqləndirmək çətindir. Digər tərəfdən, URL parametrləri axtarış motorlarına verilən dəyərin bütün variasiyalara skanerdən giriş tələb etmədiyini tez yoxlamaq və müəyyən etmək üçün çeviklik təmin edir.

    Səhifənin məzmununu dəyişdirməyən və URL parametrləri kimi qeyd edilməli olan ümumi dəyərlərə aşağıdakılar daxildir:

    • Sessiya ID
    • ID İzləmə
    • İstinad identifikatorları
    • Vaxt ştampları
    Nümunə №3: İstifadəçi tərəfindən yaradılan dəyərlərin (bəlkə də sonsuz) taranan və indeksləşdirilə bilən, lakin axtarış üçün faydasız olan URL parametrlərinə çevrilməsi.
    Taranan və indekslənmiş URL-lərdə sayt istifadəçiləri tərəfindən yaradılan kiçik məlumatlardan (məsələn, uzunluq/enlem və ya "günlər əvvəl") istifadə:
    • example.com/find-a-doctor? radius=15&enlem=40,7565068&uzunluq=-73,9668408
    • example.com/article?category=health& days-ago=7
    Necə:
    • example.com/find-a-doctor?city=san-francisco&neighborhood=soma
    • example.com/articles?category=health&date=yanvar-10-2014
    İstifadəçiyə taranan URL-lər yaratmaq üçün dəyərlər yaratmağa icazə vermək əvəzinə (naticədə ziyarətçilər üçün çox az dəyərə malik sonsuz imkanlar yaranır), ən populyar dəyərlər üçün səhifə kateqoriyasını dərc etmək daha yaxşıdır və səhifəni daha çox etmək üçün əlavə məlumat daxil edilə bilər. nəticələri olan adi axtarış səhifəsindən daha dəyərlidir. Alternativ olaraq, istifadəçi tərəfindən yaradılan dəyərləri ayrıca qovluğa yerləşdirməyi və sonra həmin kataloqdan taramanı söndürmək üçün robots.txt-dən istifadə etməyi düşünə bilərsiniz.
    • example.com/filtering/ find-a-doctor?radius=15&latitude=40.7565068&longitude=-73.9668408
    • example.com/filtering/articles?category=health&days-ago=7
    Və robots.txt-də:
    İstifadəçi-agent: *
    İcazə vermə: /filtrləmə/

    Nümunə №4. Məntiqsiz URL parametrlərinin əlavə edilməsi.

    • example.com/gummy-candy/lolipops/gummy-candy/ gummy-candy/product?swedish-fish
    • example.com/product?cat=gummy-condy&cat=lolipops&cat=gummy-condy &cat=gummy-condy&item=swedish-fish
    Yaxşı qərar:
    • example.com /gummy-condy/ product?item=swedish-fish
    Ən yaxşı qərar:
    • example.com/product?item=swedish-fish&category=gummy-condy
    Kənar URL parametrləri yalnız təkrarlanmanı artırır və nəticədə sayt daha az effektiv şəkildə taranır və indekslənir. Buna görə də, yeni URL-lər yaratmazdan əvvəl lazımsız URL parametrlərindən xilas olmaq və vaxtaşırı lazımsız bağlantıları təmizləmək lazımdır. İstifadəçi sessiyası üçün çoxlu parametrlər tələb olunarsa, pişik=gummy-candy&cat=lolipops&cat=gummy-candy& kimi dəyərləri daim əlavə etmək əvəzinə kukilərdə məlumatları gizlətmək mümkündür

    Nümunə №5: Boş nəticələr olduqda əlavə dəqiqləşdirmələr (süzgəc) təklif edin.

    Pis:
    Təmizləmək üçün boş elementlər olduqda istifadəçilərə filtrləri seçməyə icazə verin.


    İstifadəçiləri məyus edən və axtarış motorları üçün lazımsız sorğulara səbəb olan sıfır nəticələri olan səhifənin dəqiqləşdirilməsi (məsələn, qiymət=10-dan yuxarı).

    Necə:
    Yalnız istifadəçinin seçəcəyi elementlər olduqda bağlantılar yaradın. Nəticə sıfırdırsa, linki "boz" kimi qeyd edin (yəni klikləmək mümkün deyil). İstifadə qabiliyyətini daha da təkmilləşdirmək üçün hər filtrin yanında element sayı göstəricisini daxil etməyi düşünün.


    Sıfır nəticə ilə səhifənin göstərilməsi (məsələn, qiymət=10-dan yuxarı) icazə verilmir, üstəlik istifadəçilərin lazımsız kliklər etməsi qadağandır və axtarış motorları bunu taramaz. faydalı səhifə.

    Yalnız məhsullar mövcud olduqda URL yaratmaqla lazımsız URL-lərin qarşısını almaq və ziyarətçi yerini minimuma endirmək lazımdır. Bu, istifadəçilərin saytınızda məşğul olmasına kömək edəcək (heç bir məhsul tapılmadıqda geri düyməsinə daha az klik), axtarış motorlarına məlum olan mümkün URL-lərin sayını azaldacaq. Həmçinin, əgər səhifə sadəcə "müvəqqəti olaraq tükənib" deyilsə, lakin heç vaxt müvafiq məlumatı ehtiva etməyəcəksə, ona 404 cavab kodu verməyi düşünün. 404 səhifəsində daha çox naviqasiya variantı və ya axtarış qutusu olan istifadəçilər üçün faydalı mesaj tərtib edə bilərsiniz ki, istifadəçilər əlaqəli məhsulları tapa bilsinlər.

    Veb ustaları üzlü naviqasiya tətbiq etməyi düşünən yeni saytlar üçün unikal məzmun səhifələrinin taramasını (saytınızdakı ünvanlar toplusu Googlebot-a məlumdur) optimallaşdırmaq və dublikat səhifələrin axtarış sistemində indeksləşdirilməsini (indeksləşdirmə siqnallarının konsolidasiyası) azaltmaq üçün bir neçə variant var.

    Axtarış motorlarının məzmunun hər bir fərdi səhifəsini taraması üçün hansı URL parametrlərinin tələb olunduğunu müəyyənləşdirin (yəni, hər bir elementə ən azı bir klik yolunu yaratmaq üçün hansı parametrlərin tələb olunduğunu müəyyənləşdirin). Tələb olunan parametrlərə element-id, kateqoriya-id, səhifə və s. daxil ola bilər.

    Hansı parametrlərin sorğuları ilə ziyarətçilərə faydalı olacağını və hansı parametrlərin tarama və indeksləşdirmə zamanı təkrarlanmaya səbəb olacağını müəyyənləşdirin. Şirniyyat (marmelad) nümunəsində "dad" URL parametri nümunədə dad=turş sorğuları olan istifadəçilər üçün dəyərli ola bilər. Bununla belə, "qiymət" parametrini kateqoriya=gummy-condies&taste=sour&price=over-10-un lazımsız təkrarlanmasına səbəb olduğunu düşünmək məntiqlidir. Digər ümumi nümunələr:

    • Axtarış motorları üçün dəyərli parametrlər: item-id , kateqoriya-id , ad , brend ...
    • Lazımsız parametrlər: sessiya-id , qiymət aralığı ...
    Lazımsız parametrləri ehtiva edən URL-lər üçün bir neçə konfiqurasiya variantından birini tətbiq etməyi düşünün. Sadəcə əmin olun ki, "lazımsız" URL parametrləri, həqiqətən, taramaçılar tərəfindən tarama və ya istifadəçinin hər bir fərdi məhsulu tapmaq üçün tələb olunmur!

    Seçim 1: və daxili bağlantılar

    Bütün lazımsız URL-ləri ilə işarələyin. Bu, əmək xərclərini azaldacaq axtarış robotu və tarama sürətinin düşməsinin qarşısını alır. Siz robots.txt vasitəsilə taramanı qlobal şəkildə idarə etməlisiniz (Tərcüməçinin qeydi: "" məqaləsinə baxın).
    Axtarış indeksi üçün səhifələri orada lazım olmayan səhifələrdən ayırmaq üçün rel="canonical" atributundan istifadə edin (məsələn, qiymət=5-10 səhifəsində bütün turşların kateqoriyasını göstərən rel="canonical" atributunu təyin edə bilərsiniz. marmelad example.com/category.php?category=saqqızlı konfetlər&dad=turş&page=hamısı).

    Seçim 2: Robots.txt və Disallow

    Lazımsız parametrləri olan URL-lər robots.txt-də bağlanacaq /filtrləmə/ kataloquna daxil edilir (qadağan olunmur). Bu, bütün axtarış motorlarına saytın yalnız "düzgün" daxili keçidini (məzmunu) taramasına imkan verəcək, lakin bir anda istənməyən URL-lərin taranmasını bloklayacaq. Məsələn (example.com/category.php?category=gummy-candies ), dəyərli parametrlər element, kateqoriya və dad olsaydı və sessiya id və qiyməti lazımsız olsaydı, zövq üçün URL belə olardı:
    example.com/category.php?category=gummy-candies&taste=sour , lakin qiymət kimi bütün lazımsız parametrlər URL əvvəlcədən təyin edilmiş kataloqa daxil ediləcək - /filtering/:
    example.com/filtering/category.php?category=gummy-condies&price=5-10 ,
    sonra robots.txt vasitəsilə qadağan olunacaq:
    İstifadəçi-agent: *
    İcazə vermə: /filtrləmə/

    Seçim 3: Hostları ayırın

    Buna əmin olun ən yaxşı həllər, yuxarıda sadalanan (məsələn, lazımsız ünvanlar üçün) hələ də tətbiq olunur. Əks halda, axtarış motorları artıq indeksdə böyük bir keçid kütləsi formalaşdırıb. Beləliklə, işiniz gələcək artımı azaltmağa yönəldiləcəkdir. lazımsız səhifələr ilə baxılır google robotu və indeksləşdirmə siqnallarının konsolidasiyası.

    Standart kodlaşdırma və açar=dəyər formatı ilə parametrlərdən istifadə edin.

    Səhifənin məzmununu dəyişdirməyən dəyərlərin, məsələn, sessiya identifikatorlarının kataloqlar deyil, açar=dəyər kimi həyata keçirildiyinə əmin olun.

    Filtr etmək üçün heç bir element olmadıqda kliklərə icazə verməyin və URL-lər yaratmayın.

    URL parametrlərinin xəritələşdirilməsinə məntiq əlavə edin: hər zaman dəyər əlavə etmək əvəzinə lazımsız parametrləri silin (məsələn, belə bir keçid yaratmaqdan çəkinin: example.com/product?cat=gummy-candy&cat=lollipops &cat=gummy-candy&item=swedish- balıq).

    Dəyərli parametrləri əvvəlcə siyahıya salmaqla URL-də saxlayın (çünki URL-lər axtarış nəticələrində görünür) və daha az uyğun parametrləri isə sonuncu (məsələn, sessiya ID-si).
    Bu keçid strukturundan qaçın: example.com/category.php?session-id=123&tracking-id=456 &category=gummy-candies&taste=sour
    Saytınızdakı keçidlərin necə işlədiyini dəqiq başa düşsəniz, Veb Ustası Alətlərində URL parametrlərini tənzimləyin.

    Nə vaxt əmin olun JavaScript istifadə edərəküçün dinamik nəzarət URL-i yeniləmədən məzmun (çeşidləmə/filtr/gizlətmək) üçün saytınızda axtarış dəyərinə malik real veb ünvanlar var, məsələn, tarama və indeksləşdirilə bilən əsas kateqoriyalar və məhsul səhifələri. Yalnız istifadə etməməyə çalışın ana səhifə Bütün saytınız üçün (yəni bir URL) və naviqasiyanın məzmununu dinamik şəkildə dəyişdirmək üçün JavaScript vasitəsilə - bu, təəssüf ki, istifadəçilərə axtarışda yalnız bir URL verəcəkdir. Həmçinin dinamik filtrləmənin performansa təsir etmədiyinə əmin olun ən pis tərəfi, çünki istifadəçinin saytla işləməsinə mane olacaq.

    Səhifənin imtiyazlı versiyasında rel="canonical" atributunu göstərməklə eyni məzmunlu müxtəlif səhifələrin indeksləşdirilməsini təkmilləşdirin. rel="canonical" atributu bir və ya bir neçə domen daxilində istifadə edilə bilər.

    "Səhifələnmiş" məzmunun indeksləşdirilməsini (məsələn, "saqqızlı konfetlər" kateqoriyasından səhifə=1 və səhifə=2) (hər ikisi) ilə optimallaşdırın:

    • "hamısına baxmaq" parametri ilə kanonik kateqoriyanı göstərən bir sıra səhifələrə rel="canonical" atributunu əlavə edin (məsələn, rel= ilə "saqqızlı konfetlər" kateqoriyasından səhifə=1, səhifə=2 və səhifə=3 canonical” kateqoriyasında=gummy-condies&page=all ), səhifənin istifadəçilər üçün uyğun olduğundan və tez yükləndiyindən əmin olun.
    • Ayrı-ayrı səhifələr arasındakı əlaqəni göstərmək üçün səhifələmə işarəsindən rel="next" və rel="prev" istifadə edin (bax "Paginaton with rel="next" and rel="prev" ") .
    Sayt xəritələrinə yalnız kanonik keçidləri daxil edin.