PINQ - ชุดข้อมูลที่สอบปากคำ การค้นหาแบบ Faceted ดัชนีประกอบในตัว Patching JQuery UI Slider: การตั้งค่าการเปลี่ยนเส้นทาง
( "query": ( "และ": [ ( "terms": ("country": ["be", "fr"]) ), ( "terms": ("หมวดหมู่": ["หนังสือ", "ภาพยนตร์ " "]) ) ] ) )
สำหรับตัวนับ เราสามารถใช้การรวมตัวในตัวจาก Elasticsearch แต่ละแง่มุมจะถูกจัดเก็บเป็นช่องเดียวในดัชนี ดังนั้นเราจึงสามารถใช้การรวมคำศัพท์ในแต่ละช่องเหล่านี้ได้ การรวมจะส่งกลับตัวนับสำหรับค่าของฟิลด์นี้
( "query": ( "และ": [ ( "terms": ("country": ["be", "fr"]) ), ( "terms": ("หมวดหมู่": ["หนังสือ", "ภาพยนตร์ " "]) ) ]), "การรวมกลุ่ม": ( "ประเทศ": ( "เงื่อนไข": ("ฟิลด์": "ประเทศ")), "หมวดหมู่": ( "เงื่อนไข": ("ฟิลด์": "หมวดหมู่" ) ) ) )
หากคุณเรียกใช้แบบสอบถามนี้ คุณจะสังเกตเห็นว่าตัวนับถูกปิดใช้งาน ประเทศที่ไม่ได้เลือกทั้งสองประเทศ โปรตุเกส และบราซิล มีค่าตัวนับเป็น 0 แม้ว่าจะมีผลลัพธ์จริงหากเราต้องการเลือก (เนื่องจากขอบของ ORinner) สิ่งนี้เกิดขึ้นเนื่องจากตามค่าเริ่มต้น Elasticsearch จะดำเนินการรวมกลุ่มกับชุดผลลัพธ์ ซึ่งหมายความว่า หากคุณเลือกฝรั่งเศส ตัวกรองของประเทศอื่นจะมีคะแนนเป็น 0 เนื่องจากชุดผลลัพธ์จะมีเฉพาะรายการจากฝรั่งเศสเท่านั้น
เพื่อแก้ไขปัญหานี้ เราต้องบอกให้ Elasticsearch ดำเนินการรวมชุดข้อมูลทั้งหมด โดยไม่สนใจคำค้นหา เราสามารถทำได้โดยกำหนดคลัสเตอร์ของเราให้เป็นระดับโลก
( "query": ( "และ": [ ( "terms": ("country": ["be", "fr"]) ), ( "terms": ("หมวดหมู่": ["หนังสือ", "ภาพยนตร์ " "]) ) ]), "การรวมกลุ่ม": ( "all_products": ( "global": (), "การรวมกลุ่ม": ( "ประเทศ": ( "เงื่อนไข": ("ฟิลด์": "ประเทศ")), " หมวดหมู่": ( "เงื่อนไข": ("ฟิลด์": "หมวดหมู่") ) ) ) ) )
หากเราทำเช่นนี้ ตัวนับของเราจะเหมือนเดิมเสมอ เนื่องจากพวกมันจะนับรวมชุดข้อมูลทั้งหมดเสมอ ไม่ว่าตัวกรองของเราจะเป็นอย่างไร หน่วยของเราต้องซับซ้อนขึ้นอีกเล็กน้อย เพื่อให้ได้ผล เราต้องเพิ่มตัวกรองเข้าไป การรวมแต่ละรายการต้องอาศัยชุดข้อมูลที่ใช้ตัวกรองทั้งหมด ยกเว้นชุดข้อมูลของตัวเอง ดังนั้น การรวมตามบัญชีในฝรั่งเศสจะนับตามชุดข้อมูลที่ใช้ตัวกรองหมวดหมู่ แต่ไม่ใช่ตัวกรองประเทศ:
( "query": ( "และ": [ ( "terms": ("country": ["be", "fr"]) ), ( "terms": ("หมวดหมู่": ["หนังสือ", "ภาพยนตร์ " "]) ) ]), "aggregations": ( "all_products": ( "global": (), "aggregations": ( "ประเทศ": ( "ตัวกรอง": ( "และ": [ ( "terms": ( "category": ["หนังสือ", "ภาพยนตร์"]) ) ] ), "aggregations": ( "filtered_countries": ( "terms": ("field": "country") ) ) ), "categories": ( "filter": ( "และ": [ ( "terms": ("ประเทศ": ["be","fr"]) ) ]), "aggregations": ( "filtered_categories": ( "terms": ( " ฟิลด์": "หมวดหมู่") ) ) ) ) ) ) )
( "took": 153, "timed_out": false, "_shards": ( "total": 5, "successful": 5, "failed": 0), "hits": ( "total": 3, "max_score" ": 0, "hits": ["..."]), "aggregations": ( "all_products": ( "doc_count": 21, "หมวดหมู่ที่กรอง": ( "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": [ ( "คีย์": "fr", "doc_count": 6 ), ( "คีย์": "br", "doc_count": 4 ), ( "คีย์": "be", "doc_count": 3 ), ( "คีย์": "pt", "doc_count": 2 ) ] ) ) ) ) )
กรอบงาน Yii2 $terms = QueryHelper::terms("categories.name" , "my category" ) ;$nested = QueryHelper:: ซ้อนกัน ("string_facet" , QueryHelper:: filter ([ QueryHelper:: term ("string_facet.facet_name" , [ "value" => $id , "boost" => 1 ] ) , QueryHelper:: เทอม ("string_facet.facet_value" , [ "value" => $value , "boost" => 1 ] ) , ] ) ) ; $filter = QueryHelper::should ($ซ้อน) ;การนำทางแบบประกอบเป็นปัญหาสำหรับไซต์อีคอมเมิร์ซทั้งหมด จำนวนหน้าเว็บที่มากเกินไปที่ใช้สำหรับองค์ประกอบเดียวกันในรูปแบบต่างๆ ก่อให้เกิดภัยคุกคามต่อประสิทธิภาพการค้นหา สิ่งนี้สามารถส่งผลเสียต่อ SEO และ
ประสบการณ์ผู้ใช้- ผู้เชี่ยวชาญจากบล็อก SEO Hacker อธิบายว่าการนำทางแบบประกอบคืออะไรและจะปรับปรุงอย่างไร
แง่มุมและตัวกรองแตกต่างกัน นี่คือความแตกต่าง:
- Facets เป็นหมวดหมู่ที่จัดทำดัชนีไว้ ช่วยปรับแต่งรายการผลิตภัณฑ์และทำหน้าที่เป็นส่วนขยายของหมวดหมู่หลัก แง่มุมต่างๆ จะเพิ่มความหมายที่เป็นเอกลักษณ์ให้กับแต่ละตัวเลือกที่ผู้ใช้เลือก เนื่องจากมีการจัดดัชนีแง่มุมต่างๆ จึงต้องส่งสัญญาณที่เกี่ยวข้องไปยังเครื่องมือค้นหา เพื่อให้แน่ใจว่าหน้านั้นมีคุณลักษณะที่สำคัญทั้งหมด
- ตัวกรองใช้เพื่อจัดเรียงและปรับแต่งรายการภายในรายการ จำเป็นสำหรับผู้ใช้ แต่ไม่ใช่สำหรับเครื่องมือค้นหา ตัวกรองไม่ได้รับการจัดทำดัชนีเนื่องจากไม่ได้เปลี่ยนเนื้อหาของหน้า แต่จะเรียงลำดับตามลำดับอื่นเท่านั้น ส่งผลให้ URL หลายรายการมีเนื้อหาที่ซ้ำกัน
ชุดค่าผสมด้านต่างๆ ที่เป็นไปได้แต่ละชุดจะมี URL เฉพาะของตัวเอง มันอาจทำให้เกิดปัญหาบางอย่างจากมุมมองของ SEO นี่คือสิ่งหลัก:
- เนื้อหาที่ซ้ำกัน
- เปลืองงบประมาณในการสแกน
- ขจัดข้อแตกต่างของลิงก์
เมื่อไซต์ของคุณเติบโตขึ้น จำนวนหน้าที่ซ้ำกันก็จะเพิ่มขึ้นตามไปด้วย ลิงก์ที่เข้ามาอาจไปที่หน้าที่ซ้ำกันต่างๆ ซึ่งจะช่วยลดมูลค่าของลิงก์และจำกัดความสามารถของเพจในการจัดอันดับ
ความน่าจะเป็นของการกินเนื้อคนก็เพิ่มขึ้นเช่นกัน คำหลัก- หน้าเว็บหลายหน้าพยายามจัดอันดับด้วยคำหลักเดียวกัน ส่งผลให้มีความสอดคล้องน้อยลงและมีการจัดอันดับต่ำลง ปัญหานี้สามารถหลีกเลี่ยงได้หากคำหลักแต่ละคำถูกกำหนดเป้าหมายไปยังหน้าเดียวเท่านั้น
โซลูชั่นการนำทางแบบเหลี่ยมเพชรพลอยเมื่อเลือกโซลูชันสำหรับการนำทางแบบประกอบ ให้พิจารณาเป้าหมายสุดท้ายของคุณ: การเพิ่มจำนวนหน้าที่คุณจัดทำดัชนี หรือลดจำนวนหน้าที่คุณไม่ต้องการให้จัดทำดัชนี ต่อไปนี้เป็นวิธีแก้ไขปัญหาที่อาจเป็นประโยชน์สำหรับคุณ:
อาแจ็กซ์หากคุณใช้ AJAX ระบบจะไม่สร้าง URL ใหม่เมื่อผู้ใช้คลิกที่ข้อมูลประกอบหรือตัวกรอง เนื่องจากจะไม่มี URL ที่ไม่ซ้ำสำหรับทุกๆ แง่มุมที่เป็นไปได้ ปัญหาเรื่องเนื้อหาที่ซ้ำกัน การแบ่งคำหลักร่วมกัน และต้นทุนการจัดทำดัชนีที่สูญเปล่าจึงอาจหมดไป
AJAX จะมีผลก่อนที่จะมีการเปิดตัวไซต์อีคอมเมิร์ซเท่านั้น ไม่ได้ใช้เพื่อแก้ไขปัญหาทรัพยากรที่มีอยู่ วิธีนี้ยังต้องเสียค่าใช้จ่ายในส่วนของคุณด้วย
แท็ก noindexแท็ก noindex ใช้เพื่อบอกให้บอทแยกหน้าใดหน้าหนึ่งออกจากดัชนี วิธีนี้จะไม่ปรากฏในผลการค้นหาของ Google ซึ่งจะช่วยลดจำนวนเนื้อหาที่ซ้ำกันที่ปรากฏในดัชนีและผลการค้นหา
การดำเนินการนี้ไม่สามารถแก้ปัญหางบประมาณการรวบรวมข้อมูลได้ เนื่องจากบอทจะยังคงเยี่ยมชมเพจของคุณ แถมยังไม่ได้ช่วยกระจายคุณค่าของลิงค์อีกด้วย
แอตทริบิวต์ rel=canonicalด้วยแอตทริบิวต์นี้ คุณจะบอก Google ว่าคุณมีหน้าหลักที่ต้องการในการจัดทำดัชนีและจัดอันดับ 1 หน้า และเนื้อหาเวอร์ชันอื่นๆ ทั้งหมดจากหน้านั้นเป็นเพียงหน้าซ้ำที่ไม่จำเป็นต้องจัดทำดัชนี
โซเฟีย อิบรากิโมวา
นักการตลาดเนื้อหา
หากสามารถเข้าถึงหน้าเดียวกันบนไซต์ของคุณได้จากหลาย URL โรบ็อตการค้นหาจะถือว่าแต่ละ URL เป็นหน้าที่แยกกัน บอทจะตัดสินว่าเนื้อหาบนไซต์ของคุณไม่ซ้ำกัน และสิ่งนี้จะส่งผลเสียต่อการจัดอันดับและลดตำแหน่งของคุณในผลการค้นหา เพื่อหลีกเลี่ยงปัญหานี้ ให้ระบุหน้าหลักตามรูปแบบบัญญัติโดยการแทรกลำดับอักขระต่อไปนี้ลงในบล็อก HEAD:
คุณสามารถใช้หน้า Canonical เพื่อแก้ไขปัญหาเนื้อหาที่ซ้ำกัน และลิงก์แชร์จะถูกรวมเข้ากับหน้าหลักของคุณ แต่มีโอกาสที่บอทจะยังคงรวบรวมข้อมูลหน้าที่ซ้ำกัน ซึ่งเป็นการเปลืองงบประมาณในการรวบรวมข้อมูล
Robots.txtการบล็อกบางหน้าจากการจัดทำดัชนีช่วยให้คุณบรรลุผลสำเร็จ ผลลัพธ์ที่ดี- มันง่ายรวดเร็วและ วิธีที่เชื่อถือได้- วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการตั้งค่าตัวเลือกแบบกำหนดเองเพื่อระบุการผสมผสานแง่มุมและตัวกรองที่เป็นไปได้ทั้งหมดที่คุณต้องการบล็อก รวมไว้ที่ส่วนท้ายของแต่ละ URL ที่คุณต้องการซ่อน (http://ที่อยู่เต็มหน้า/robots.txt) หรือใช้เมตาแท็ก Robots ในพื้นที่ HEAD ของโค้ดหน้า
เมื่อทำการเปลี่ยนแปลง URL โปรดทราบว่าโรบ็อตจะใช้เวลาประมาณ 3-4 สัปดาห์ในการสังเกตและตอบสนองต่อการเปลี่ยนแปลงเหล่านี้
มีปัญหาบางอย่างที่นี่เช่นกัน ค่าของลิงก์จะถูกจำกัด และ URL ที่ถูกบล็อกอาจถูกจัดทำดัชนีเนื่องจากมีลิงก์ภายนอก
คอนโซล ค้นหาโดย Googleนี่เป็นวิธีที่ดีในการแก้ไขปัญหาชั่วคราวในขณะที่คุณสร้างระบบนำทางที่ดีขึ้นและใช้งานง่ายยิ่งขึ้น คุณสามารถใช้ Google Search Console เพื่อบอกเครื่องมือค้นหาว่าจะรวบรวมข้อมูลเว็บไซต์ของคุณอย่างไร
- เข้าสู่ระบบ บัญชีคอนโซลและเลือกส่วน "รวบรวมข้อมูล":
- คลิกที่ปุ่ม "พารามิเตอร์ URL":
- ระบุผลกระทบที่การตั้งค่าแต่ละรายการจะมีต่อหน้าเว็บ และวิธีที่คุณต้องการให้ Google ปฏิบัติต่อหน้าเหล่านั้น
โปรดทราบว่าวิธีนี้จะซ่อนเฉพาะเนื้อหาที่ซ้ำกันจากโปรแกรมรวบรวมข้อมูลของ Google หน้าต่างๆ จะยังคงปรากฏใน Bing และ Yahoo
วิธีการปรับปรุงการนำทางแบบ Facetedลองพิจารณาวิธีการทั้งหมดที่ช่วยให้คุณสร้างการนำทางแบบประกอบที่ถูกต้องโดยสังเขป:
- การใช้ AJAX
- ลบหรือซ่อนลิงก์ไปยังหมวดหมู่หรือกรองหน้าที่มีเนื้อหาขาดหายไป
- อนุญาตให้จัดทำดัชนีชุดค่าผสมของแง่มุมบางรายการที่มีปริมาณการค้นหาสูง
- การตั้งค่าลำดับชั้นของไซต์ผ่านเบรดครัมบ์ในหมวดหมู่และหมวดหมู่ย่อย
- การสร้างหน้ามาตรฐาน (หลัก) สำหรับเนื้อหาที่ซ้ำกัน
- รวมคุณสมบัติการจัดทำดัชนีจากหน้าส่วนประกอบทั่วทั้งชุดโดยใช้มาร์กอัปหน้าด้วย rel="next" และ rel="prev"
แต่ละโซลูชันที่กล่าวถึงมีข้อดีและข้อเสียในตัวเอง ไม่มีวิธีแก้ปัญหาที่เป็นสากล ทุกอย่างขึ้นอยู่กับลักษณะเฉพาะของธุรกิจของคุณและกรณีเฉพาะ การนำทางแบบประกอบที่ได้รับการปรับให้เหมาะสมจะช่วยให้ไซต์ของคุณสามารถกำหนดเป้าหมายคำหลักได้หลากหลายยิ่งขึ้น เพื่อหลีกเลี่ยงความเสี่ยง ตรวจสอบให้แน่ใจว่าการนำทางไม่เพียงแต่ตรงตามข้อกำหนดของโรบ็อตการค้นหาเท่านั้น แต่ยังมอบประสบการณ์ที่ดีแก่ผู้ใช้อีกด้วย
คนยุคใหม่พยายามใช้เวลาช้อปปิ้งน้อยลงเรื่อยๆ แคตตาล็อกผลิตภัณฑ์ที่ช้าทำให้ลูกค้าหนีไป ร้านค้าสูญเสียลูกค้าและผลกำไรส่วนหนึ่ง ทำให้ร้านค้าออนไลน์ของคุณน่าสนใจยิ่งขึ้นด้วยเทคโนโลยี facet Facet - เช่น ที่กำหนดไว้ล่วงหน้า ค้นหา. สร้างดัชนีประกอบและเร่งการค้นหาผลิตภัณฑ์และการทำงานของแค็ตตาล็อกทั้งหมดได้อย่างมาก
หมายเหตุ: กลไกการค้นหาแบบประกอบมีให้ใช้งานตั้งแต่เวอร์ชัน 15.0.1 ของโมดูล Information Blocks และรวมเข้ากับส่วนประกอบ ส่วนประกอบคือโค้ดโปรแกรมที่ออกแบบในวิชวลเชลล์ที่ทำหน้าที่เฉพาะของโมดูลเพื่อแสดงข้อมูลในสาธารณะ ส่วนหนึ่ง. เราสามารถแทรกโค้ดบล็อกนี้ลงในหน้าเว็บไซต์ได้โดยไม่ต้องเขียนโค้ดใดๆ โดยตรง
ตัวกรองอัจฉริยะ ส่วนประกอบเตรียมตัวกรองสำหรับการเลือกจากบล็อกข้อมูลและแสดงแบบฟอร์มตัวกรองสำหรับการกรององค์ประกอบ ต้องเชื่อมต่อส่วนประกอบก่อนส่วนประกอบเพื่อแสดงองค์ประกอบแคตตาล็อก มิฉะนั้น รายการองค์ประกอบจะไม่ถูกกรอง ส่วนประกอบนี้เป็นมาตรฐาน ซึ่งรวมอยู่ในการกระจายโมดูลและมีเทมเพลต 3 แบบ: .default , Visual_horizontal และ Visual_vertical (ไม่รองรับเทมเพลตสองอันสุดท้าย แต่ยังคงรักษาความเข้ากันได้ไว้) ในโปรแกรมแก้ไขภาพ ส่วนประกอบตั้งอยู่ตามเส้นทาง.
เนื้อหา > แค็ตตาล็อก > ตัวกรองอัจฉริยะ
เรียนรู้เพิ่มเติมเกี่ยวกับการค้นหาแบบประกอบ ลองดูตัวอย่าง:
|
หากคุณตั้งค่าการค้นหาแบบ faceted ชุดการค้นหาผลิตภัณฑ์สำเร็จรูปจะถูกสร้างขึ้นสำหรับค่าคุณสมบัติบางอย่าง (ดัชนี faceted) เช่น ตัวเลือกสำหรับคำขอที่เป็นไปได้ เช่น เสื้อยืดสีแดง ผลิตภัณฑ์ผ้าฝ้ายสีดำทั้งหมด ชุดเดรสไซส์ XS เป็นต้น
มาสร้างดัชนีเหลี่ยมเพชรพลอยด้วยขั้นตอนง่ายๆ ไม่กี่ขั้นตอน:
|
เมื่อเพิ่มใหม่หรือลบคุณสมบัติออกจากตัวกรองอัจฉริยะ
ในบทเรียนวันนี้ เราจะพยายามจำลองการค้นหาแบบเหลี่ยมมุมโดยใช้ Javascript ฉันสมมติว่าคุณรู้อยู่แล้วว่าการค้นหาแบบประกอบคืออะไรหากคุณกำลังอ่านบทช่วยสอนนี้ ไม่เช่นนั้น Google หรือลองดูที่ Amazon หรือการสาธิตของฉัน ก่อนอื่นเราต้องมีห้องสมุด github.com/eikes/facetedsearch ดาวน์โหลดและเชื่อมต่อไฟล์ facetedsearch.js กับโปรเจ็กต์ของเรา เรายังต้องการไลบรารี jQuery และ Underscore ด้วย ข้อจำกัดความรับผิดชอบ: ฉันเข้าใจว่า JQ ไม่ใช่เค้กอีกต่อไป แต่ฉันใช้มันเป็นน้ำตาลวากยสัมพันธ์ที่คุ้นเคย คุณสามารถเขียนใหม่สำหรับไลบรารีที่คุณคุ้นเคยมากกว่าหรือใน vanilla JS ก่อนอื่น เรามาสร้างมาร์กอัปง่ายๆ ที่มีการขึ้นต่อกันที่เชื่อมโยงกันก่อน: เอกสาร // ที่นี่เราจะแสดงตัวกรองแง่มุม // และนี่คือองค์ประกอบของเรา ตอนนี้เราต้องอธิบายการตั้งค่าแอปพลิเคชันของเราและสร้างเทมเพลตสำหรับแสดงองค์ประกอบอาร์เรย์ที่เราจะจัดเรียงโดยใช้แง่มุม: $(function())( var item_template = // อธิบายเทมเพลต "" + " " class="img-responsive">" + ", " + " " + "" + ""; settings = ( items: example_items, facets: ( // ระบุหมวดหมู่ facet "category" : "What Category", "continent" : "ทวีปไหน", "ภาษา" : "ภาษาโปรแกรม"), resultSelector: "#results", // องค์ประกอบ DOM ที่เราแสดงผลลัพธ์ facetSelector: "#facets", // องค์ประกอบ DOM สำหรับ facets resultTemplate: item_template, paginationCount: 8, // จำนวนองค์ประกอบต่อหน้า orderByOptions: ("firstname": " ชื่อ `, "นามสกุล": "นามสกุล", "หมวดหมู่": "หมวดหมู่", "RANDOM": "สุ่ม"), facetSortOption: ("ทวีป": ["อเมริกาเหนือ", "อเมริกาใต้"]) ) $ facetelize (การตั้งค่า);จริงๆ แล้วสร้างอาร์เรย์ JSON ด้วยองค์ประกอบเพื่อแสดงในการค้นหาแบบเหลี่ยมมุมของเราใน JS: รายการ Var = [ ( "firstname": "Mary", "lastname": "Smith", "imageURL": "http://lorempixel.com/150/150/cats/2", "description": "Sed Ea Amet. Stet Voluptua. Nonumy Magna Takimata , "หมวดหมู่": "Mouse", "ภาษา": ["Smalltalk", "XSLT"], "ทวีป": "แอฟริกา" ), ( "ชื่อ": "Patricia ", "นามสกุล": "Johnson", "imageURL": "http://lorempixel.com/150/150/cats/3", "description": "Ut Takimata Sit Aliquyam Labore Aliquyam Sit Lorem Amet ” , "หมวดหมู่": "สิงโต", "ทวีป": "อเมริกาเหนือ", ... ]; อาร์เรย์นี้ฉันจะใส่มันไว้ในไฟล์ JS แยกต่างหากที่จะถูกสร้างขึ้นแบบไดนามิกจากฐานข้อมูลเป็นต้น เพียงเท่านี้ เราได้รับการค้นหาแบบ faceted ใน JavaScript และสามารถปรับแต่งได้ ต่อไป ฉันจะจัดเตรียมเอกสารไลบรารีที่ได้รับการแปล ซึ่งคุณสามารถดูสิ่งกระตุ้นที่คุณต้องการได้ คุณสมบัติเอกสารประกอบสองฟังก์ชันจะถูกส่งออกไปยังเนมสเปซ jQuery facetelize ใช้เพื่อเริ่มต้นการค้นหาแบบ faceted ด้วยการตั้งค่าที่กำหนด facetUpdate สามารถใช้ได้หากคุณต้องการเปลี่ยนสถานะการค้นหา facet จากภายนอก การตั้งค่าวัตถุรายการ: อาร์เรย์ของรายการที่จะถูกกรองและจัดเรียงในกระบวนการ แง่มุม: วัตถุที่มีคีย์สอดคล้องกับคีย์องค์ประกอบและค่าเป็นส่วนหัวของด้านนั้น รายการจะถูกกรองตามมูลค่าที่มีสำหรับคีย์เหล่านี้ orderByOptions: คล้ายกับแง่มุม ยกเว้นคู่คีย์-ค่าเหล่านี้ใช้สำหรับการเรียงลำดับเท่านั้น เมื่อเปิดใช้งานคีย์ RANDOM ผลลัพธ์จะถูกสุ่ม facetSelector: นี่คือตัวเลือกที่ใช้ค้นหาโหนด DOM ที่จะใช้เลือกตัวกรองด้าน resultSelector: นี่คือตัวเลือกที่ใช้ในการค้นหาโหนด DOM ที่แสดงผลลัพธ์ resultTemplate: สตริงที่ใช้โดยเอ็นจิ้น Underscore template เพื่อแสดงผลแต่ละองค์ประกอบจากอาร์เรย์รายการ คุณลักษณะต่อไปนี้จะถูกเพิ่มลงในแต่ละองค์ประกอบ ซึ่งสามารถใช้ในเทมเพลตได้เช่นกัน: battItemNr, battItemCount และ TotalItemCount สถานะ: ออบเจ็กต์นี้เก็บตัวกรองปัจจุบัน เรียงลำดับ: currentResult และอื่น ๆ คุณสามารถระบุสตริง orderBy หรือออบเจ็กต์ตัวกรองเพื่อตั้งค่าล่วงหน้าได้ EnablePagination: บูลีนเพื่อเปิดใช้งานการแบ่งหน้าและปุ่ม "โหลดเพิ่มเติม" มีค่าเริ่มต้นเป็น true paginationCount: หากเปิดใช้งานตัวแบ่งหน้า ให้กำหนดจำนวนองค์ประกอบต่อหน้า โดยค่าเริ่มต้นคือ 50 facetSortOption: ใช้ฟังก์ชันนี้เพื่อเปลี่ยนลำดับขององค์ประกอบด้าน นำออบเจ็กต์ที่มีคีย์สอดคล้องกับชื่อและค่าของ Facet ลงในอาร์เรย์ของค่า Facet ซึ่งสามารถจัดเรียงตามลำดับที่คุณต้องการให้เป็นได้ ตัวอย่างนี้จะเรียงลำดับทวีปตามลำดับที่แตกต่างกัน โดยเพิ่มรายการที่ไม่รวมอยู่ในอาร์เรย์ตามลำดับตัวอักษร: FacetSortOption: ("ทวีป": ["อเมริกาเหนือ", "อเมริกาใต้"]) มีเทมเพลตเพิ่มเติมอีกบ้าง โปรดดู ซอร์สโค้ด facetedsearch.js เพื่อดูทุกอย่าง ตัวเลือกที่ใช้ได้แม่แบบ กิจกรรมคุณสามารถเชื่อมโยงกับเหตุการณ์บางอย่างซึ่งควรส่งการแจ้งเตือนเมื่อมีการกระทำบางอย่างเกิดขึ้น ในการทำสิ่งนี้ เราใช้ระบบเหตุการณ์ jquery: facetuicreated: คุณสามารถผูกฟังก์ชันนี้กับองค์ประกอบ settings.facetSelector DOM ซึ่งควรได้รับแจ้งเมื่อ ส่วนต่อประสานกับผู้ใช้ถูกสร้างขึ้น facetedsearchresultupdate: คุณสามารถผูกฟังก์ชันนี้กับองค์ประกอบ settings.resultSelector DOM เพื่อรับการแจ้งเตือนเกี่ยวกับผลลัพธ์การอัพเดต facetedsearchfacetclick: เหตุการณ์นี้จะเริ่มทำงานเมื่อมีการคลิก facet และเริ่มทำงานในองค์ประกอบ settings.facetSelector ซึ่งรับ facet id เป็นอาร์กิวเมนต์ facetedsearchorderby: เหตุการณ์นี้เกิดขึ้นเมื่อคลิกองค์ประกอบการเรียงลำดับบนองค์ประกอบ settings.facetSelector ใช้ลำดับ ID เป็นอาร์กิวเมนต์ $(settings.resultSelector).bind("facetedsearchresultupdate", function())( // ทำอะไรสักอย่าง อาจจะ )); ในบทความนี้ (ระดับผู้ดูแลเว็บ - ขั้นสูง) เราจะพูดถึงสิ่งที่เรียกว่าจุดตัดในรูปแบบต่างๆ การนำทาง "เหลี่ยมเพชรพลอย" เพื่อให้การดูดซึมเนื้อหาง่ายขึ้น ฉันแนะนำให้อ่านบทความ Wikipedia เรื่อง "การจำแนก Facet" และสิ่งพิมพ์เกี่ยวกับ ภาษาอังกฤษ(แต่มีรูปภาพด้วย!) "ออกแบบการนำทางแบบเหลี่ยมมุมที่ดีขึ้นสำหรับเว็บไซต์ของคุณ" การนำทางแบบประกอบที่กรองตามสีหรือช่วงราคาอาจมีประโยชน์สำหรับผู้เข้าชมของคุณ แต่มักจะส่งผลเสียต่อผลการค้นหาเนื่องจากสร้าง URL หลายชุดที่มีเนื้อหาซ้ำกัน เนื่องจากซ้ำกัน เครื่องมือค้นหาจะไม่สามารถสแกนไซต์อย่างรวดเร็วเพื่อดูการอัปเดตเนื้อหา ซึ่งจะส่งผลต่อการจัดทำดัชนี เพื่อลดปัญหานี้และช่วยให้ผู้ดูแลเว็บทำให้การค้นหาการนำทางแบบประกอบเป็นเรื่องง่าย เราต้องการ: เหมาะสำหรับผู้ใช้และการค้นหาโดย Google เส้นทางที่ชัดเจนไปยังหน้าผลิตภัณฑ์/บทความ: การแสดง URL สำหรับหน้าหมวดหมู่: การแสดง URL เฉพาะผลิตภัณฑ์: รายการซ้ำที่ไม่ต้องการเกิดจากการนำทางแบบประกอบ หน้าเดียวกันสามารถเข้าถึงได้จากที่อยู่เว็บที่แตกต่างกัน: หน้า Canonical URL: example.com/product.php? item=ปลาสวีเดน หน้าซ้ำกัน URL:example.com/product.php? item=swedish-fish&category=gummy-candies&price=5-10 Category=gummy-candies&taste=เปรี้ยว&ราคา=5-10 ข้อผิดพลาด:
URL: example.com/category.php? Category=gummy-candies&taste=sour&price=over-10 ข้อผิดพลาด:
ตัวอย่างที่ 1: มีการใช้พารามิเตอร์ที่ไม่ได้มาตรฐานเป็นส่วนหนึ่งของ URL: เครื่องหมายจุลภาคและวงเล็บแทน คีย์=ค่า&:
example.com/category?category=gummy-candy&sort=low-to-high&sid=789 ตัวอย่างที่ 2: การใช้ไดเร็กทอรีหรือพาธของไฟล์แทนพารามิเตอร์ในรายการค่าที่ไม่เปลี่ยนแปลงเนื้อหาของเพจ: ทางออกที่ดี:
ค่าทั่วไปที่ไม่เปลี่ยนแปลงเนื้อหาของเพจและต้องแสดงเป็นพารามิเตอร์ URL ได้แก่:
การใช้ข้อมูลรองที่สร้างโดยผู้ใช้ไซต์ (เช่น ลองจิจูด/ละติจูด หรือ "วันที่ผ่านมา") ในที่อยู่ที่รวบรวมข้อมูลและจัดทำดัชนี:
ตัวแทนผู้ใช้: * ไม่อนุญาต: /กรอง/ ตัวอย่างหมายเลข 4 การเพิ่มพารามิเตอร์ URL โดยไม่มีตรรกะ
ตัวอย่างที่ 5: แนะนำการปรับแต่งเพิ่มเติม (การกรอง) เมื่อมีผลลัพธ์เป็นค่าว่าง ห่วย: ชี้แจงหน้าเว็บที่ไม่มีผลลัพธ์ (เช่น ราคา=เกิน 10) ซึ่งทำให้ผู้ใช้หงุดหงิดและทำให้เกิดการร้องขอที่ไม่จำเป็นสำหรับเครื่องมือค้นหา วิธี: ไม่อนุญาตให้แสดงหน้าเว็บที่ไม่มีผลลัพธ์ (เช่น ราคา=เกิน 10) และยังห้ามผู้ใช้ทำการคลิกที่ไม่จำเป็น และเครื่องมือค้นหาจะไม่รวบรวมข้อมูลนี้ หน้าที่มีประโยชน์. มีความจำเป็นต้องป้องกันการปรากฏที่อยู่ที่ไม่จำเป็นและลดพื้นที่สำหรับผู้เข้าชมโดยการสร้าง URL เฉพาะเมื่อมีผลิตภัณฑ์เท่านั้น วิธีนี้จะช่วยให้ผู้ใช้มีส่วนร่วมกับไซต์ของคุณ (คลิกปุ่มย้อนกลับน้อยลงเมื่อไม่พบผลิตภัณฑ์) และจะลดจำนวน URL ที่เป็นไปได้ที่เครื่องมือค้นหารู้จัก นอกจากนี้ หากหน้าเว็บไม่ได้เป็นเพียง "สินค้าหมดชั่วคราว" แต่ไม่น่าจะมีข้อมูลที่เกี่ยวข้องเลย คุณอาจต้องพิจารณาให้รหัสตอบกลับ 404 แก่หน้านั้น ในหน้า 404 คุณสามารถออกแบบข้อความที่เป็นประโยชน์สำหรับผู้ใช้โดยมีตัวเลือกเพิ่มเติมในการนำทาง หรือช่องค้นหาเพื่อให้ผู้ใช้สามารถค้นหาผลิตภัณฑ์ที่เกี่ยวข้องได้ สำหรับไซต์ใหม่ที่ผู้ดูแลเว็บกำลังพิจารณาใช้การนำทางแบบประกอบ มีหลายตัวเลือกในการเพิ่มประสิทธิภาพการรวบรวมข้อมูล (ชุดที่อยู่ในไซต์ของคุณที่ Google รู้จัก) ของหน้าเนื้อหาที่ไม่ซ้ำ และลดหน้าที่ซ้ำกันจากการเข้าสู่ดัชนีของเครื่องมือค้นหา (การรวมการจัดทำดัชนี สัญญาณ) กำหนดพารามิเตอร์ URL ที่จำเป็นสำหรับเครื่องมือค้นหาในการรวบรวมข้อมูลหน้าเนื้อหาแต่ละหน้า (นั่นคือ กำหนดพารามิเตอร์ที่จำเป็นในการสร้างเส้นทางการคลิกอย่างน้อยหนึ่งเส้นทางไปยังแต่ละรายการ) พารามิเตอร์ที่จำเป็นอาจรวมถึง item-id , category-id , หน้า ฯลฯ พิจารณาว่าพารามิเตอร์ใดจะเป็นประโยชน์ต่อผู้เข้าชมเมื่อมีการสืบค้น และพารามิเตอร์ใดมีแนวโน้มที่จะทำให้เกิดการซ้ำซ้อนในการรวบรวมข้อมูลและการจัดทำดัชนี ในตัวอย่างขนมหวาน (แยมผิวส้ม) พารามิเตอร์ URL "taste" อาจมีประโยชน์สำหรับผู้ใช้ที่มีข้อความค้นหาในตัวอย่าง taste=sour อย่างไรก็ตาม การพิจารณาพารามิเตอร์ "price" ทำให้เกิดความซ้ำซ้อนโดยไม่จำเป็นของ category=gummy-candies&taste=sour&price=over-10 ตัวอย่างทั่วไปอื่นๆ:
ตัวเลือกที่ 1: และลิงก์ภายใน ทำเครื่องหมาย URL ที่ไม่จำเป็นทั้งหมดด้วยนามสกุล . ซึ่งจะช่วยลดต้นทุนค่าแรง หุ่นยนต์ค้นหาและจะป้องกันความถี่ในการสแกนลดลง คุณต้องจัดการการสแกนทั่วโลกผ่าน robots.txt (หมายเหตุของนักแปล: ดูบทความ " ") ตัวเลือกที่ 2: Robots.txt และ Disallow URL ที่มีพารามิเตอร์ที่ไม่จำเป็นจะรวมอยู่ในไดเร็กทอรี /filtering/ ซึ่งจะถูกปิดใน robots.txt (ไม่อนุญาต) วิธีนี้จะช่วยให้เครื่องมือค้นหาทั้งหมดรวบรวมข้อมูลเฉพาะลิงก์ใน (เนื้อหา) ที่ "ถูกต้อง" ของเว็บไซต์ แต่จะบล็อกการรวบรวมข้อมูล URL ที่ไม่ต้องการในครั้งเดียว ตัวอย่างเช่น (example.com/category.php?category=gummy-candies) หากพารามิเตอร์ที่มีค่าคือรายการ หมวดหมู่ และรสชาติ และรหัสเซสชันและราคานั้นไม่จำเป็น ดังนั้น URL ของรสชาติจะเป็นดังนี้: ตัวเลือกที่ 3: แยกโฮสต์ ตรวจสอบให้แน่ใจ โซลูชั่นที่ดีที่สุดรายการข้างต้น (เช่น สำหรับที่อยู่ที่ไม่จำเป็น) ยังคงมีผลบังคับใช้ มิฉะนั้นเครื่องมือค้นหาได้สร้างลิงก์จำนวนมากในดัชนีแล้ว วิธีนี้งานของคุณจะมุ่งเป้าไปที่การลดการเติบโตต่อไป หน้าที่ไม่จำเป็น, ดูโดยใช้ หุ่นยนต์กูเกิลและการรวมสัญญาณการจัดทำดัชนี ใช้พารามิเตอร์ที่มีการเข้ารหัสมาตรฐานและรูปแบบคีย์=ค่า ตรวจสอบให้แน่ใจว่าค่าที่ไม่เปลี่ยนเนื้อหาของหน้า เช่น รหัสเซสชัน ถูกนำไปใช้เป็น key=value แทนที่จะเป็นไดเร็กทอรี ไม่อนุญาตให้คลิกหรือสร้าง URL เมื่อไม่มีองค์ประกอบให้กรอง เพิ่มตรรกะในการแมปพารามิเตอร์ URL: ลบพารามิเตอร์ที่ไม่จำเป็นออกแทนที่จะเพิ่มค่าอย่างต่อเนื่อง (เช่น หลีกเลี่ยงการสร้างลิงก์เช่นนี้ example.com/product?cat=gummy-candy&cat=lollipops &cat=gummy-candy&item=swedish-fish ) จัดเก็บพารามิเตอร์ที่มีคุณค่าไว้ใน URL โดยแสดงรายการไว้ก่อน (เนื่องจาก URL จะปรากฏอยู่ในผลการค้นหา) และพารามิเตอร์ที่เกี่ยวข้องน้อยกว่าจะอยู่หลังสุด (เช่น รหัสเซสชัน) รับรองว่าเมื่อไร. โดยใช้จาวาสคริปต์สำหรับ การควบคุมแบบไดนามิกเนื้อหา (จัดเรียง/กรอง/ซ่อน) โดยไม่ต้องอัปเดต URL มีที่อยู่เว็บจริงบนไซต์ของคุณที่มีมูลค่าการค้นหา เช่น หมวดหมู่หลักและหน้าผลิตภัณฑ์ที่สามารถรวบรวมข้อมูลและจัดทำดัชนีได้ พยายามอย่าใช้อย่างเดียว หน้าแรก(เช่น URL เดียว) สำหรับทั้งไซต์ของคุณและผ่าน JavaScript จะเปลี่ยนเนื้อหาพร้อมการนำทางแบบไดนามิก - น่าเสียดายที่สิ่งนี้จะทำให้ผู้ใช้มีเพียง URL เดียวในการค้นหา นอกจากนี้ ให้ตรวจสอบว่าไม่มีผลกระทบต่อประสิทธิภาพในการกรองแบบไดนามิก ด้านที่เลวร้ายที่สุดเนื่องจากจะป้องกันไม่ให้ผู้ใช้ทำงานกับไซต์ ปรับปรุงการจัดทำดัชนีหน้าต่างๆ ของเนื้อหาเดียวกันโดยการระบุแอตทริบิวต์ rel="canonical" บนหน้าเวอร์ชันสิทธิพิเศษ แอตทริบิวต์ rel="canonical" สามารถใช้ได้ภายในโดเมนตั้งแต่ 1 โดเมนขึ้นไป เพิ่มประสิทธิภาพการจัดทำดัชนีเนื้อหาที่มีการแบ่งหน้า (เช่น page=1 และ page=2 จากหมวดหมู่ "gummy candy") โดยวิธีใดวิธีหนึ่งต่อไปนี้
|