PINQ - مجموعه داده های بازجویی شده. جستجوی وجهی Inline Facet Index JQuery UI Slider Patch: تنظیم تغییر مسیر

( "پرسش": ( "و": [ ( "شرایط": ("کشور": ["be", "fr"]) ), ( "شرایط": ("دسته": ["کتاب"، "فیلم" "])) ])))

برای شمارنده‌ها، می‌توانیم از مصالح داخلی Elasticsearch استفاده کنیم. هر یک از این دو وجه به عنوان یک فیلد در ایندکس ذخیره می‌شوند، بنابراین می‌توانیم در هر یک از این فیلدها از تجمع اصطلاح استفاده کنیم. تجمیع یک شمارنده برای مقدار این فیلد برمی گرداند.

( "پرسش": ( "و": [ ( "شرایط": ("کشور": ["be", "fr"]) ), ( "شرایط": ("دسته": ["کتاب"، "فیلم" "]) ) ] ), "مجموعه ها": ( "کشورها": ( "شرایط": ("فیلد": "کشور") ), "مقوله ها": ("شرایط": ("فیلد": "رده") ))))

اگر بخواهید این کوئری را اجرا کنید، متوجه می شوید که شمارنده ها غیرفعال هستند. دو کشور انتخاب نشده، پرتغال و برزیل، تعداد 0 دارند. اگرچه اگر بخواهیم آنها را انتخاب کنیم نتایج واقعی وجود دارد (به دلیل یال داخلی). این به این دلیل است که به طور پیش‌فرض، Elasticsearch تجمیع‌های خود را روی مجموعه نتایج انجام می‌دهد. این بدان معناست که اگر فرانسه را انتخاب کنید، فیلترهای دیگر کشورها امتیاز 0 خواهند داشت زیرا مجموعه نتایج فقط شامل مواردی از فرانسه است.

برای رفع این مشکل، باید به Elasticsearch دستور دهیم تا با نادیده گرفتن پرس و جو، تجمیع را در کل مجموعه داده انجام دهد. ما می توانیم این کار را با تعریف خوشه های خود به عنوان جهانی انجام دهیم.

( "پرسش": ( "و": [ ( "شرایط": ("کشور": ["be", "fr"]) ), ( "شرایط": ("دسته": ["کتاب"، "فیلم" "]) ) ] ), "Aggregations": ( "all_products": ( "global": ()، "Aggregations": ( "کشورها": ( "شرایط": ("field": "کشور"))، " دسته بندی ها": ("شرایط": ("فیلد": "رده") ) ) ) )

اگر فقط این کار را انجام می‌دادیم، شمارنده‌های ما همیشه یکسان می‌بودند، زیرا بدون در نظر گرفتن فیلترهای ما، همیشه روی کل مجموعه داده حساب می‌کردند. مجموعه‌های ما باید کمی پیچیده‌تر شوند، برای اینکه کار کند، باید فیلترهایی را به آنها اضافه کنیم. هر تجمیع باید روی یک مجموعه داده حساب کند که همه فیلترها به جز فیلترهای خودش اعمال شوند. بنابراین تجمیع حساب در فرانسه روی مجموعه داده با فیلتر دسته اعمال می شود، اما نه فیلتر کشور:

( "پرسش": ( "و": [ ( "شرایط": ("کشور": ["be", "fr"]) ), ( "شرایط": ("دسته": ["کتاب"، "فیلم" "]) ) ] ), "Aggregations": ( "all_products": ( "جهانی": ()، "Aggregations": ( "کشورها": ( "فیلتر": ( "و": [ ( "شرایط": ( "category": ["کتاب"،"فیلم"]) ) ] ), "Aggregations": ( "filtered_countries": ( "شرایط": ("field": "کشور") ) ) ), "مقوله ها": ( "filter": ( "و": [ ( "شرایط": ("کشور": ["be","fr"]) ) ] ), "Aggregations": ( "filtered_categories": ( "شرایط": (" فیلد": "رده") ) ) ) ) )))

( "took": 153، "timed_out": false، "_shards": ( "Total": 5، "موفق": 5، "failed": 0 ), "Hits": ( "Total": 3، "max_score" ": 0، "Hits": ["..."] ), "Aggregations": ( "all_products": ( "doc_count": 21, "filtered classes": ( "doc_count": 13, "categories": ( "doc_count_error_upper_bound": 0، "sum_other_doc_count": 0، "buckets": [ ( "key": "movies"، "doc_count": 6 ), ( "key": "music"، "doc_count": 4 )، ( "key": "books"، "doc_count": 3 ) ) ) ), "filtered_countries": ( "doc_count": 15، "countries": ( "doc_count_error_upper_bound": 0، "sum_other_doc_count": 0، "buckets": [ ( "key": "fr"، "doc_count": 6 ), ( "key": "br"، "doc_count": 4 ), ( "key": "be"، "doc_count": 3 ), ( "key": "pt"، "doc_count": 2 ) ) ) ) ) )

چارچوب yii2

$terms = QueryHelper::terms("categories.name" , "دسته من" ) ; $nested = QueryHelper:: تودرتو ("string_facet" , QueryHelper:: فیلتر ([ QueryHelper:: term ("string_facet.facet_name" , [ "value" => $id , "boost" => 1 ] , QueryHelper:: term ("string_facet.facet_value" , ​​[ "value" => $value , "boost" => 1 ] ) , ] ) ; $filter = QueryHelper:: باید ($neted ) ;

ناوبری وجهی یک مشکل برای همه سایت های تجارت الکترونیک است. تعداد بیش از حد صفحاتی که برای تغییرات مختلف یک عنصر استفاده می‌شوند، اثربخشی جستجو را تهدید می‌کند. این می تواند تأثیر منفی بر سئو و تجربه ی کاربر. کارشناسان وبلاگ سئو هکر گفتند که ناوبری وجهی چیست و چگونه می توان آن را بهبود بخشید.

ناوبری وجهی: تعریف

این نوع پیمایش معمولا در نوارهای کناری سایت های تجارت الکترونیک یافت می شود، حاوی فیلترها و جنبه هایی است - گزینه هایی که کاربر به دلخواه پیکربندی می کند. به مشتریان فروشگاه های آنلاین اجازه می دهد تا با استفاده از ترکیبی از ویژگی ها، محصول مورد نظر خود را جستجو کنند تا زمانی که کاربران آنچه را که نیاز دارند، فیلتر کنند.

جنبه ها و فیلترها متفاوت است. تفاوت اینجاست:

  • وجوه مقوله های نمایه شده هستند. آن‌ها به اصلاح فهرست‌های محصولات کمک می‌کنند و به عنوان بسط دسته‌های اصلی عمل می‌کنند. جنبه‌ها برای هر انتخابی که کاربر انجام می‌دهد، ارزش منحصر به فردی می‌افزاید. از آنجایی که وجوه ایندکس شده اند، باید سیگنال های مربوطه را به موتور جستجو ارسال کنند تا اطمینان حاصل شود که صفحه دارای تمام ویژگی های مهم است.

  • فیلترها برای مرتب‌سازی و اصلاح آیتم‌ها در فهرست‌ها استفاده می‌شوند. آنها برای کاربران ضروری هستند، اما نه برای موتورهای جستجو. فیلترها ایندکس نمی شوند زیرا محتوای صفحه را تغییر نمی دهند، فقط آن را به ترتیب دیگری مرتب می کنند. این باعث می شود یک URL چندگانه دارای محتوای تکراری باشد.

مسائل بالقوه

هر ترکیب وجه ممکن URL منحصر به فرد خود را دارد. از نظر سئو می تواند مشکلاتی ایجاد کند. در اینجا موارد اصلی وجود دارد:

  • محتوای تکراری
  • صرف بودجه برای اسکن.
  • از بین بردن تفاوت لینک ها

همانطور که سایت شما رشد می کند، تعداد صفحات تکراری نیز افزایش می یابد. پیوندهای دریافتی ممکن است به صفحات تکراری مختلفی بروند. این امر ارزش لینک ها را کاهش می دهد و فرصت های رتبه بندی صفحه را محدود می کند.

همچنین احتمال آدمخواری را افزایش می دهد. کلید واژه ها. چندین صفحه سعی می کنند برای کلمات کلیدی یکسان رتبه بندی کنند که در نتیجه ثبات کمتر و رتبه پایین تری دارند. اگر هر کلمه کلیدی فقط یک صفحه را هدف قرار دهد، می توان از این مشکل جلوگیری کرد.

راه حل هایی برای ناوبری وجهی

هنگام انتخاب راه حل برای مشکل ناوبری وجهی، هدف نهایی خود را در نظر داشته باشید: افزایش تعداد صفحات فهرست شده یا کاهش تعداد صفحاتی که نمی خواهید ایندکس شوند. در اینجا چند راه حل وجود دارد که ممکن است برای شما مفید باشد:

AJAX

اگر از AJAX استفاده می کنید، وقتی کاربر روی یک وجه یا فیلتر کلیک می کند، یک URL جدید ایجاد نمی شود. از آنجایی که برای هر ترکیب احتمالی از جنبه‌ها، URLهای منحصربه‌فردی وجود نخواهد داشت، مشکل محتوای تکراری، آدم‌خواری کلمات کلیدی و هزینه‌های نمایه‌سازی به طور بالقوه برطرف می‌شود.

AJAX فقط قبل از راه اندازی یک سایت تجارت الکترونیک می تواند موثر باشد. از آن برای حل مشکلات منابع موجود استفاده نمی شود. همچنین این روش مستلزم هزینه های خاصی از جانب شماست.

تگ noindex

تگ noindex برای اینکه به ربات ها بگوید یک صفحه خاص را از فهرست حذف کنند استفاده می شود. بنابراین در نتایج جستجوی گوگل ظاهر نمی شود. این مقدار محتوای تکراری که در فهرست و نتایج جستجو ظاهر می شود را کاهش می دهد.

این مشکل بودجه خزیدن را حل نمی کند زیرا ربات ها همچنان از صفحه شما بازدید خواهند کرد. همچنین به توزیع ارزش پیوند کمک نمی کند.

rel = ویژگی متعارف

با این ویژگی، به گوگل می گویید که یک صفحه اصلی ترجیحی برای فهرست بندی و رتبه بندی دارید، و تمام نسخه های محتوای دیگر آن صفحه فقط تکراری هستند که نیازی به ایندکس شدن ندارند.

سوفیا ابراگیمووا

بازاریاب محتوا

اگر می توان به همان صفحه در سایت شما از چندین URL دسترسی داشت، خزنده های موتورهای جستجو هر URL را به عنوان یک صفحه جداگانه در نظر می گیرند. ربات‌ها تصمیم می‌گیرند که محتوای سایت شما منحصر به فرد نیست و این بر رتبه‌بندی تأثیر منفی می‌گذارد و موقعیت شما را در SERP پایین می‌آورد. برای جلوگیری از این امر، صفحه اصلی اصلی را با قرار دادن دنباله کاراکترهای زیر در بلوک HEAD مشخص کنید:

برای حل مشکل محتوای تکراری می توانید از صفحات canonical استفاده کنید و لینک اشتراک گذاری با صفحه اصلی شما ادغام می شود. اما این احتمال وجود دارد که ربات ها همچنان صفحات تکراری را بخزند، و این اتلاف بودجه خزیدن است.

Robots.txt

بستن برخی از صفحات از نمایه سازی به شما امکان می دهد به آن دست پیدا کنید نتایج خوب. این ساده، سریع و راه قابل اعتماد. راحت ترین گزینه تنظیم یک گزینه سفارشی برای تعیین تمام ترکیبات ممکن از جنبه ها و فیلترهایی است که می خواهید مسدود کنید. آن را در انتهای هر URL که می‌خواهید مخفی کنید (http://full page address/robots.txt) اضافه کنید یا از متا تگ Robots در ناحیه HEAD کد صفحه استفاده کنید.

هنگام تغییر URL، باید به یاد داشته باشید که 3-4 هفته طول می کشد تا ربات ها متوجه این تغییرات شده و به آنها واکنش نشان دهند.

در اینجا نیز مشکلات خاصی وجود دارد. ارزش لینک ها محدود خواهد بود و همچنین ممکن است URL مسدود شده به دلیل وجود لینک های خارجی ایندکس شود.

کنسول جستجوی گوگل

این یک راه عالی برای رفع موقت مشکلات شماست، در حالی که روی ساختن یک سیستم ناوبری بهتر و کاربرپسندتر کار می کنید. می توانید از کنسول استفاده کنید جستجوی گوگلبه موتورهای جستجو بگویید که چگونه سایت شما را بخزند.

  • ورود حسابکنسول و بخش "اسکن" (Crawl) را انتخاب کنید:

  • بر روی دکمه "URL Parameters" کلیک کنید:

  • تاثیر هر یک از پارامترهای خود را بر روی صفحه و نحوه برخورد گوگل با این صفحات را مشخص کنید.

به یاد داشته باشید که این روش فقط محتوای تکراری را از خزنده های گوگل پنهان می کند. صفحات بینگ و یاهو همچنان نمایش داده می شوند.

نحوه بهبود ناوبری وجهی

بیایید به طور خلاصه تمام روش هایی را که به شما امکان ایجاد ناوبری وجهی صحیح را می دهد در نظر بگیریم:

  • با استفاده از AJAX
  • پیوندهای دسته‌ها را حذف یا پنهان کنید یا صفحاتی که محتوا ندارند را فیلتر کنید.
  • امکان نمایه سازی ترکیب خاصی از جنبه هایی که حجم جستجوی بالایی از ترافیک دارند
  • سلسله مراتب سایت را از طریق خرده نان در دسته ها و زیر مجموعه ها ایجاد کنید.
  • ایجاد صفحات متعارف (اصلی) برای محتوای تکراری.
  • ادغام ویژگی های نمایه سازی از صفحات جزء به کل ردیف با استفاده از نشانه گذاری صفحه با rel = "next" و rel = "prev".

نتیجه

هر یک از راه حل های ذکر شده دارای مزایا و معایب خود هستند. هیچ راه حل جهانی وجود ندارد، همه چیز به ویژگی های کسب و کار شما و مورد خاص بستگی دارد. ناوبری وجهی بهینه به سایت شما اجازه می دهد تا طیف وسیع تری از کلمات کلیدی را هدف قرار دهد. برای جلوگیری از خطر، مطمئن شوید که ناوبری نه تنها الزامات ربات های جستجوگر را برآورده می کند، بلکه از نظر تجربه کاربر نیز راحت است.

یک فرد مدرن سعی می کند زمان کمتر و کمتری را برای خرید صرف کند. کاتالوگ محصولات کند مشتریان را دفع می کند، فروشگاه مشتریان و بخشی از سود را از دست می دهد. فروشگاه آنلاین خود را با تکنولوژی جذاب تر کنید وجهی وجهی - یعنی. از پیش تعریف شده.جستجو کردن. ایجاد کردن شاخص های جنبهو سرعت جستجوی محصولات و کار کل کاتالوگ را به میزان قابل توجهی افزایش می دهد.

توجه داشته باشید:موتور جستجوی وجهی از نسخه 15.0.1 ماژول موجود است بلوک های اطلاعاتیو ادغام شده با جزء مولفه- این یک کد برنامه طراحی شده در یک پوسته بصری است که عملکرد خاصی از هر ماژول را برای نمایش داده ها در قسمت عمومی انجام می دهد. ما می‌توانیم این بلوک کد را بدون نوشتن مستقیم کد در صفحات سایت جاسازی کنیم. فیلتر هوشمند کامپوننت فیلتری را برای انتخاب از infoblock آماده می کند و فرم فیلتر را برای فیلتر کردن عناصر نمایش می دهد. کامپوننت باید قبل از مولفه خروجی آیتم کاتالوگ متصل شود، در غیر این صورت لیست اقلام فیلتر نخواهد شد. مؤلفه استاندارد است، در کیت توزیع ماژول گنجانده شده است و شامل سه قالب است: پیش فرض, بصری_افقیو بصری_عمودی. (دو الگوی آخر پشتیبانی نمی شوند و به دلایل سازگاری باقی مانده اند.)

AT ویرایشگر بصریجزء در طول مسیر قرار دارد محتوا > کاتالوگ > فیلتر هوشمند.

جزء متعلق به ماژول بلوک های اطلاعات است.

درباره جستجوی وجهی بیشتر بیاموزید

بیایید ایجاد کنیم شاخص های جنبهدر چند مرحله ساده:

آیا من نیاز به ایجاد مجدد نمایه های وجهی دارم؟

نمایه های وجهی به صورت خودکار بازآفرینی می شوند یا باید آنها را به صورت دستی بازآفرینی کنید، بسته به اقدامات انجام شده:

بطور خودکار موارد جدید اضافه شده یا موارد موجود ویرایش شده است محصولات.
ایجاد نکنیدخواص جدید
به صورت دستی سیستم از شما پیامی در بالای صفحات می خواهد
بخش اداری
جدید اضافه شده یا ویرایش شده است بخش های دایرکتوری.
هنگام افزودن یک ویژگی جدید یا حذف یک ویژگی از فیلتر هوشمند.
هنگام تخلیه کالا، به عنوان مثال، از 1C، اگر کالا ایجاد کردنخواص جدید

جستجوی چند جانبه کار کاتالوگ محصول را بهبود می بخشد. برای استفاده از آن نیاز دارید:

  1. ایجاد نمایه های وجهی برای کاتالوگ محصولات؛
  2. مراقب هشداری در مورد نیاز به بازسازی دستی فهرست ها باشید.

در درس امروز سعی خواهیم کرد با استفاده از جاوا اسکریپت یک جستجوی وجهی (وجهی) شبیه سازی شده را بازسازی کنیم. منظورم این است که شما از قبل با خواندن این آموزش می دانید جستجوی وجهی چیست، در غیر این صورت آن را در گوگل جستجو کنید یا آمازون یا نسخه نمایشی من را بررسی کنید.

ابتدا به کتابخانه github.com/eikes/facetedsearch نیاز داریم. آن را دانلود کنید و فایل facetedsearch.js را در پروژه ما قرار دهید. همچنین به کتابخانه های jQuery و Underscore نیاز داریم.

سلب مسئولیت:من می دانم که JQ دیگر یک کیک نیست، اما با استفاده از آن به عنوان قند نحوی معمول، می توانید آن را به کتابخانه های آشناتر یا وانیلی JS برش دهید.

بنابراین ابتدا بیایید یک نشانه گذاری ساده با وابستگی های متصل ایجاد کنیم:

سند

// اینجا جایی است که فیلترهای وجهی را خروجی خواهیم داد
// و در اینجا عناصر ما خواهند بود

اکنون باید تنظیمات برنامه خود را شرح دهیم و الگویی برای نمایش عناصر آرایه ایجاد کنیم که با استفاده از وجوه آن را مرتب می کنیم:

خوب، در واقع آرایه JSON را با عناصری برای نمایش در جستجوی وجهی ما در JS ایجاد کنید:

Var آیتم = [ ( "نام": "مری"، "نام خانوادگی": "اسمیت"، "imageURL": "http://lorempixel.com/150/150/cats/2"، "توضیحات": "Sed Ea" Amet. Stet Voluptua. Nonumy Magna Takimata "، "رده": "موس"، "زبان": ["Smalltalk"، "XSLT"]، "قاره": "Africa")، ("نام": "Patricia" "، "نام خانوادگی": "جانسون"، "imageURL": "http://lorempixel.com/150/150/cats/3"، "توضیحات": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Sit Lorem Amet. Ipsum Rebum "، "رده": "شیر"، "قاره": "امریکای شمالی")، ... ];

آرایه داده شدهمن آن را در یک فایل JS جداگانه قرار می دهم که به طور پویا از پایگاه داده تشکیل می شود.

این همه چیز است، ما جستجوی وجهی را در جاوا اسکریپت دریافت می کنیم و می توانیم آن را سفارشی کنیم. در مرحله بعد، من اسناد ترجمه شده کتابخانه را ارائه می کنم، جایی که می توانید محرک های مورد نیاز خود را مشاهده کنید.

مستندات

کارکرد

این دو تابع به فضای نام jQuery صادر می شوند.

facetelize برای مقداردهی اولیه جستجوی وجهی با تنظیمات داده شده استفاده می شود.

facetUpdate را می توان در صورتی استفاده کرد که می خواهید وضعیت جستجوی جنبه را از خارج تغییر دهید.

تنظیمات شی

آیتم ها: آرایه ای از آیتم ها که در این فرآیند فیلتر و مرتب می شوند.

facets: شیئی که کلیدهای آن با کلیدها و مقادیر عناصر مطابقت دارد، عنوان این وجه است. موارد بر اساس مقداری که برای آن کلیدها دارند فیلتر خواهند شد.

orderByOptions: مشابه جنبه‌ها، به جز این جفت‌های کلید/مقدار فقط برای مرتب‌سازی استفاده می‌شوند. وقتی کلید RANDOM فعال است، نتایج را می توان تصادفی کرد.

facetSelector: این انتخابگری است که برای یافتن گره DOM که فیلترهای facet از آن انتخاب می شوند استفاده می شود.

resultSelector: این انتخابگر است که برای یافتن گره DOM که در آن نتایج نمایش داده می شود استفاده می شود.

resultTemplate: رشته ای که توسط موتور قالب Underscore برای رندر کردن هر عنصر از آرایه آیتم ها استفاده می شود. ویژگی های زیر به هر عنصر اضافه می شود که می تواند در یک الگو نیز استفاده شود: batchItemNr، batchItemCount و totalItemCount.

state: این شی فیلترهای فعلی را ذخیره می کند، مرتب می کند: currentResult و موارد دیگر. شما می توانید یک رشته orderBy یا یک شیء فیلتر برای از پیش پیکربندی آنها ارائه دهید.

enablePagination: Boolean برای فعال کردن صفحه‌نمایش و دکمه «بارگذاری بیشتر»، درست به‌طور پیش‌فرض.

paginationCount: اگر صفحه بندی فعال باشد، تعداد موارد در هر صفحه را تنظیم می کند، پیش فرض 50 است.

facetSortOption: از این تابع برای تغییر ترتیب عناصر facet استفاده کنید. یک شی را که در آن کلیدها با نام‌ها و مقادیر وجه مطابقت دارند، به آرایه‌ای از مقادیر وجهی می‌برد که می‌توانند به ترتیبی که می‌خواهید آنها را ببینید، مرتب شوند. این مثال قاره ها را به ترتیب دیگری مرتب می کند، عناصری که در آرایه گنجانده نشده اند به ترتیب حروف الفبا اضافه می شوند:

FacetSortOption: ("قاره": ["آمریکای شمالی"، "آمریکای جنوبی"])

چندین قالب دیگر وجود دارد، لطفاً برای مشاهده همه، کد منبع facetedsearch.js را ببینید گزینه های موجودقالب.

تحولات

می‌توانید به برخی از رویدادها متصل شوید که در صورت انجام برخی اقدامات باید اعلان ارسال کنند. برای این کار از سیستم رویداد jQuery استفاده می کنیم:

facetuicreated: می توانید این تابع را به settings.facetSelector عنصر DOM متصل کنید که باید هنگام ایجاد UI اطلاع داده شود.

facetedsearchresultupdate: می توانید این تابع را به عنصر DOM settings.resultSelector متصل کنید تا از نتایج به روز رسانی مطلع شوید.

facetedsearchfacetclick: این رویداد زمانی اجرا می شود که روی یک وجه کلیک می شود و روی عنصر settings.facetSelector فعال می شود. که شناسه facet را به عنوان آرگومان دریافت می کند.

facetedsearchorderby: این رویداد زمانی فعال می شود که عنصر مرتب سازی بر روی عنصر settings.facetSelector کلیک شود. دستور ID را به عنوان آرگومان دریافت می کند.

$(settings.resultSelector).bind("facetedsearchresultupdate", function()( // کاری انجام دهید، شاید ));

در این مقاله (سطح وب مستر - پیشرفته)، ما در مورد، متقاطع به روش های مختلف، به اصطلاح صحبت خواهیم کرد. ناوبری وجهی برای ساده‌تر کردن همسان‌سازی مطالب، توصیه می‌کنم به مقاله ویکی‌پدیا «طبقه‌بندی جنبه‌ها» و انتشارات در زبان انگلیسی(اما با تصاویر!) "ناوبری وجهی بهتری را برای وب سایت های خود طراحی کنید".

پیمایش وجهی فیلتر شده بر اساس رنگ یا محدوده قیمت می تواند برای بازدیدکنندگان شما مفید باشد، اما اغلب برای جستجو با ایجاد ترکیب آدرس های متعدد با محتوای تکراری مضر است. به دلیل تکراری بودن موتورهای جستجوآنها نمی توانند به سرعت سایت را برای به روز رسانی محتوا اسکن کنند، که بر این اساس بر نمایه سازی تأثیر می گذارد. برای به حداقل رساندن این مشکل و کمک به وب مسترها برای جستجوی پیمایش وجهی، ما می خواهیم:

ایده آل برای کاربران و جستجوی گوگل

پاک کردن مسیر به صفحات محصولات/مقاله:

نشان دادن URL برای صفحه دسته:
http://www.example.com/category.php?category=gummy-candies

نشان دادن URL برای یک محصول خاص:
http://www.example.com/product.php?item=swedish-fish

موارد تکراری ناخواسته ناشی از ناوبری وجهی

همان صفحه از آدرس های مختلف وب قابل دسترسی است:

صفحه متعارف



URL: example.com/product.php؟ آیتم = ماهی سوئدی

صفحه تکراری



URL:example.com/product.php؟ مورد=ماهی سوئدی&رده=آب نبات صمغی&قیمت=5-10


دسته=آب نبات صمغی&طعم=ترش&قیمت=5-10

خطاها:

  • برای گوگل منطقی نیست، زیرا کاربران به ندرت [مارمالاد 9:55 دلار] را جستجو می کنند.
  • منطقی نیست که خزنده ها همان مورد ("سالاد میوه") را از صفحات دسته بندی اصلی پیدا کنند (اعم از "Gummi" یا "Sour Gummy").
  • یک نکته منفی برای صاحب سایت، زیرا درخواست های نمایه سازی با چندین نسخه از یک دسته کاهش می یابد.
  • یک نکته منفی برای صاحب سایت، زیرا بار بیهوده و غیر ضروری در آن است پهنای باندسایت
صفحات خالی:


URL: example.com/category.php؟ دسته=آب نبات صمغی&طعم=ترش&قیمت=بیش از 10

خطاها:

  • کدی که برای موتورهای جستجو اشتباه داده شده است (در این صورت صفحه باید کد 404 را بدهد)
  • صفحه خالی برای کاربران


بدترین راه حل (بدون جستجو) برای ناوبری وجهی

مثال شماره 1: پارامترهای غیر استاندارد در URL استفاده می شود: کاما و براکت، به جای کلید=مقدار&:

  • example.com/category؟ [ دسته:آب نبات صمغی ][ مرتب سازی:قیمت-پایین-به-بالا ][ sid:789 ]
  • example.com/category?category , gummy-candy , sort , lowtohigh , sid , 789
چگونه:
example.com/category؟ دسته=آب نبات صمغی&مرتب=کم به بالا&sid=789

مثال شماره 2: استفاده از دایرکتوری ها یا مسیرهای فایل به جای گزینه هایی در لیست مقادیری که محتوای صفحه را تغییر نمی دهند:
example.com/c123/s789/product?swedish-fish
(که در آن /c123/ دسته است، /s789/ شناسه جلسه است که محتوای صفحه را تغییر نمی دهد)

تصمیم خوب:

  • example.com /gummy-candy/ product?item=swedish-fish&sid=789(دایرکتوری، /gummy-candy/، محتویات صفحه را به شیوه ای معنی دار تغییر می دهد)
بهترین راه حل:
  • example.com/product?item=swedish-fish& دسته=آدامس شیرینی&sid=789 (پارامترهای URL انعطاف پذیری بیشتری را برای موتورهای جستجو فراهم می کند تا نحوه خزیدن موثر را تعیین کنند)
زمانی که این مقادیر مستقیماً در مسیر پیوند قرار می‌گیرند، برای خزنده‌ها دشوار است که مقادیر مفید (مانند "gummy-candy") را از مقادیر بی‌فایده (مانند "SESSIONID") متمایز کنند. از سوی دیگر، پارامترهای URL انعطاف‌پذیری را برای موتورهای جستجو فراهم می‌کنند تا به سرعت بررسی کنند و تعیین کنند که چه زمانی یک مقدار معین به دسترسی خزنده به همه تغییرات نیاز ندارد.

مقادیر رایجی که محتوای صفحه را تغییر نمی دهند و باید به عنوان پارامترهای URL فهرست شوند عبارتند از:

  • شناسه جلسه
  • ردیابی شناسه
  • شناسه های ارجاع دهنده
  • مهر زمانی
مثال شماره 3: مقادیر تولید شده توسط کاربر (احتمالا بی نهایت) را به پارامترهای URL که قابل خزیدن و نمایه سازی هستند اما برای جستجو بی فایده هستند، تبدیل کنید.
استفاده از داده های جزئی تولید شده توسط کاربران سایت (مانند طول جغرافیایی/طول جغرافیایی یا "روزهای پیش") در URL های خزیده شده و نمایه شده:
  • example.com/find-a-doctor? شعاع=15& عرض جغرافیایی=40.7565068&طول جغرافیایی=-73.9668408
  • example.com/article?category=health&روز پیش = 7
چگونه:
  • example.com/find-a-doctor? شهر=سانفرانسیسکو&محله=سوما
  • example.com/articles?category=health& date=January-10-2014
به جای اجازه دادن به کاربر برای تولید URLهای قابل خزیدن (که منجر به امکانات بی پایان با ارزش بسیار کمی برای بازدیدکنندگان می شود)، بهتر است یک دسته بندی صفحه برای محبوب ترین مقادیر منتشر کنید و می توان اطلاعات اضافی را برای بیشتر کردن صفحه درج کرد. با ارزش نسبت به صفحه جستجوی معمولی با نتایج. از طرف دیگر، می‌توانید مقادیر تولید شده توسط کاربر را در یک فهرست جداگانه قرار دهید و سپس از robots.txt برای غیرفعال کردن خزیدن از آن دایرکتوری استفاده کنید.
  • example.com /فیلتر کردن/ find-a-doctor?radius=15&latitude=40.7565068&longitude=-73.9668408
  • example.com /فیلتر کردن/مقالات?رده=سلامت&روزهای پیش=7
و در robots.txt:
عامل کاربر: *
غیر مجاز: /فیلتر کردن/

مثال شماره 4. اضافه کردن پارامترهای URL بدون منطق

  • example.com /آب نبات/آب نبات/آب نبات صمغی/آب نبات/محصول؟ماهی سوئدی
  • example.com/product? گربه = آب نبات صمغی و گربه = آب نبات چوبی و گربه = آب نبات صمغی&گربه=آب نبات صمغی&آیتم=ماهی سوئدی
تصمیم خوب:
  • example.com /gummy-candy/ product?item=swedish-fish
بهترین راه حل:
  • example.com/product? آیتم=ماهی سوئدی&رده=آب نبات صمغی
پارامترهای URL اضافی فقط تکراری بودن را افزایش می دهند و در نتیجه سایت با کارایی کمتری خزیده و ایندکس می شود. بنابراین، لازم است قبل از ایجاد URL های جدید، از شر پارامترهای URL غیر ضروری خلاص شوید و به طور دوره ای پیوندهای ناخواسته را پاک کنید. اگر پارامترهای زیادی برای جلسه کاربر مورد نیاز است، می توان به جای افزودن مداوم مقادیر، اطلاعات را در کوکی ها پنهان کرد. گربه=آب نبات صمغی&گربه=آب نبات چوبی&گربه=آب نبات صمغی& ...

مثال شماره 5: در صورت وجود نتایج پوچ، اصلاحات بیشتر (فیلتر کردن) را پیشنهاد دهید.

بد:
به کاربران اجازه دهید فیلترها را انتخاب کنند وقتی موارد خالی برای اصلاح وجود دارد.


اصلاح به صفحه ای با نتایج صفر (به عنوان مثال، قیمت = بیش از 10)، که کاربران را ناامید می کند و باعث ایجاد پرس و جوهای غیر ضروری برای موتورهای جستجو می شود.

چگونه:
تنها زمانی پیوند ایجاد کنید که عناصری برای انتخاب کاربر وجود داشته باشد. اگر نتیجه صفر است، پیوند را به عنوان "خاکستری" علامت گذاری کنید (یعنی غیرقابل کلیک). برای بهبود بیشتر قابلیت استفاده، یک نشانگر تعداد آیتم ها را در کنار هر فیلتر قرار دهید.


نمایش صفحه ای با نتایج صفر (مثلاً قیمت=بیش از 10) مجاز نیست، بعلاوه کلیک های غیر ضروری برای کاربران ممنوع است و موتورهای جستجو این را نمی خزند. صفحه مفید.

لازم است از URL های غیر ضروری جلوگیری شود و فضای بازدیدکنندگان را با تولید URL فقط در زمانی که محصولات در دسترس هستند به حداقل برسانید. این کمک می‌کند تا کاربران در سایت شما درگیر شوند (کلیک‌های کمتری روی دکمه برگشت زمانی که هیچ محصولی پیدا نمی‌شود)، تعداد URL‌های احتمالی شناخته شده برای موتورهای جستجو را کاهش می‌دهد. همچنین، اگر صفحه نه فقط "به طور موقت موجود نیست" بلکه بعید است که هرگز حاوی اطلاعات مرتبط باشد، به آن یک کد پاسخ 404 بدهید. در صفحه 404 می توانید پیامی مفید برای کاربران با گزینه های ناوبری بیشتر یا کادر جستجو طراحی کنید تا کاربران بتوانند محصولات مرتبط را پیدا کنند.

برای سایت‌های جدیدی که مدیران وب‌سایت‌ها در نظر دارند ناوبری وجهی را پیاده‌سازی کنند، چندین گزینه برای بهینه‌سازی خزیدن (مجموعه آدرس‌های موجود در سایت شما که توسط Googlebot شناخته شده است) صفحات محتوای منحصربه‌فرد و کاهش فهرست‌بندی صفحات تکراری در موتورهای جستجو (تجمیع سیگنال‌های نمایه‌سازی) وجود دارد.

تعیین کنید که چه پارامترهای URL برای موتورهای جستجو برای خزیدن هر صفحه جداگانه از محتوا مورد نیاز است (یعنی تعیین کنید چه پارامترهایی برای ایجاد حداقل یک مسیر کلیک برای هر مورد لازم است). پارامترهای مورد نیاز می تواند شامل شناسه مورد، شناسه دسته، صفحه و غیره باشد.

تعیین کنید کدام پارامتر برای بازدیدکنندگان با پرس و جوهایشان مفید خواهد بود و کدامیک بیشتر باعث تکرار در خزیدن و نمایه سازی می شوند. در مثال شیرینی‌پزی (مارمالاد)، پارامتر URL "طعم" می‌تواند برای کاربران با جستجوهای موجود در مثال ارزشمند باشد. طعم = ترش . با این حال، منطقی است که پارامتر "قیمت" را باعث تکرار غیر ضروری در نظر بگیریم دسته=آب نبات صمغی&طعم=ترش& قیمت = بالای 10 . نمونه های رایج دیگر:

  • پارامترهای ارزشمند برای موتورهای جستجو: item-id , category-id , name , brand ...
  • پارامترهای غیر ضروری: session-id، price-range ...
پیاده سازی یکی از چندین گزینه پیکربندی برای URL هایی که حاوی پارامترهای غیر ضروری هستند را در نظر بگیرید. فقط مطمئن شوید که پارامترهای URL "غیر ضروری" واقعاً برای خزیدن توسط خزنده ها یا یافتن هر محصول جداگانه توسط کاربر لازم نیست!

گزینه 1: و پیوندهای داخلی

همه URL های غیر ضروری را با علامت علامت گذاری کنید. این باعث کاهش هزینه های نیروی کار خواهد شد ربات جستجوگرو از کاهش سرعت اسکن جلوگیری کنید. شما باید خزیدن را به صورت جهانی از طریق robots.txt مدیریت کنید (یادداشت مترجم: به مقاله "" مراجعه کنید).
از ویژگی rel="canonical" برای جدا کردن صفحات فهرست جستجو از صفحاتی که در آنجا مورد نیاز نیستند استفاده کنید (مثلاً در صفحه قیمت = 5-10 می توانید ویژگی rel="canonical" را بنویسید که نشان دهنده دسته بندی مارمالادهای ترش است example.com/category.php?category=آب نبات ها&طعم=ترش& صفحه = همه ).

گزینه 2: Robots.txt و Disallow

URL هایی با پارامترهای غیر ضروری در فهرست /filtering/ گنجانده شده است که در robots.txt بسته می شود (ممنوع از غیر مجاز کردن). این به همه موتورهای جستجو اجازه می‌دهد فقط پیوند داخلی «درست» (محتوای) سایت را بخزند، اما خزیدن URL‌های ناخواسته را به یکباره مسدود می‌کند. مثلا ( example.com/category.php?category=gummy-candies)، اگر پارامترهای با ارزش آیتم، دسته و طعم بودند و شناسه جلسه و قیمت اضافی بودند، URL مربوط به طعم به صورت زیر خواهد بود:
example.com/category.php?category=gummy-candies& طعم = ترش, اما تمام پارامترهای غیر ضروری، مانند قیمت، URL در یک فهرست از پیش تعریف شده - /filtering/ شامل می شود:
example.com /فیلتر کردن/ category.php?category=آب نبات های صمغی&price=5-10,
که سپس از طریق robots.txt ممنوع خواهد شد:
عامل کاربر: *
غیر مجاز: /filtering/

گزینه 3: هاست جدا

مطمئن شوید که بهترین راه حل ها، فهرست شده در بالا (به عنوان مثال، برای آدرس های غیر ضروری) همچنان اعمال می شود. در غیر این صورت، موتورهای جستجو در حال حاضر یک توده لینک بزرگ در ایندکس تشکیل داده اند. بنابراین، هدف شما کاهش رشد بیشتر خواهد بود. صفحات غیر ضروریمشاهده شده با ربات گوگلو ادغام سیگنال های نمایه سازی.

از پارامترهایی با کدگذاری استاندارد و فرمت کلید=مقدار استفاده کنید.

اطمینان حاصل کنید که مقادیری که محتوای صفحه را تغییر نمی‌دهند، مانند شناسه‌های جلسه، به‌عنوان کلید=مقدار اجرا می‌شوند، نه دایرکتوری‌ها.

وقتی هیچ عنصری برای فیلتر کردن وجود ندارد، به کلیک‌ها اجازه ندهید و URL ایجاد نکنید.

منطق را به نگاشت پارامتر URL اضافه کنید: به جای اضافه کردن مقادیر دائمی، پارامترهای غیر ضروری را حذف کنید (به عنوان مثال از ایجاد پیوندی مانند این اجتناب کنید: example.com/product?cat=gummy-candy&cat=lollipops &cat=gummy-candy&item=swedish-fish).

ابتدا پارامترهای ارزشمند را در URL ذخیره کنید (چون URL ها در نتایج جستجو قابل مشاهده هستند) و پارامترهای کمتر مرتبط (مانند شناسه جلسه) را در ابتدا ذخیره کنید.
از این ساختار پیوند اجتناب کنید: example.com/category.php؟ session-id=123&tracking-id=456&category=آب نبات صمغی&طعم=ترش
اگر درک واضحی از نحوه کار لینک ها در سایت خود دارید، تنظیمات URL را در Webmaster Tools تنظیم کنید.

مطمئن شوید که چه زمانی با استفاده از جاوا اسکریپتبرای کنترل پویامحتوا (مرتب‌سازی/فیلتر/پنهان کردن) بدون به‌روزرسانی URL، آدرس‌های وب واقعی در سایت شما وجود دارد که دارای ارزش جستجو هستند، مانند دسته‌های اصلی و صفحات محصول که قابل خزیدن و فهرست‌بندی هستند. سعی کنید فقط استفاده نکنید صفحه نخست(یعنی یک URL) برای کل سایت شما، و از طریق جاوا اسکریپت برای تغییر پویا محتوای پیمایش - این، متأسفانه، به کاربران تنها یک URL در جستجو می دهد. همچنین، مطمئن شوید که عملکرد تحت تأثیر فیلتر کردن پویا قرار نمی گیرد بدترین طرف، زیرا از کار کاربر با سایت جلوگیری می کند.

با مشخص کردن ویژگی rel="canonical" در نسخه ممتاز صفحه، نمایه سازی صفحات مختلف از یک محتوا را بهبود بخشید. ویژگی rel="canonical" را می توان در یک یا چند دامنه استفاده کرد.

نمایه‌سازی محتوای «صفحه‌بندی‌شده» (به‌عنوان مثال صفحه=1 و صفحه=2 از دسته «آب‌نبات‌های صمغی») را توسط (یکی از این دو) بهینه کنید:

  • یک ویژگی rel="canonical" را به یک سری از صفحات اضافه کنید که دسته متعارف را با پارامتر "view-all" مشخص می کند (به عنوان مثال page=1، page=2، و page=3 از دسته "gummy candies" با rel=" متعارف” در دسته=آب نبات صمغی&صفحه=همه، اطمینان حاصل کنید که صفحه مربوط به کاربران است و به سرعت بارگذاری می شود.
  • از نشانه گذاری صفحه بندی rel="next" و rel="prev" برای نشان دادن رابطه بین صفحات جداگانه استفاده کنید (به "Paginaton با rel="next" و rel="prev" " مراجعه کنید.
فقط لینک های متعارف را در نقشه های سایت قرار دهید.