- เกี่ยวกับ Freebase Suggest
- การเพิ่มคำแนะนำของ Freebase ลงในเว็บไซต์
- ตัวเลือกการกำหนดค่า
- การแก้ไข CSS
- วิธีการทำงานของเหตุการณ์
- ข้อมูลเพิ่มเติมและคำถามที่พบบ่อย
- ตัวอย่างและสูตร
เกี่ยวกับ Freebase Suggest
Freebase Suggest เป็นปลั๊กอิน jQuery ที่เพิ่มการเติมข้อความอัตโนมัติของหัวข้อ Freebase ลงในช่องค้นหาในเว็บไซต์ ผู้ใช้เริ่มพิมพ์ข้อความและวิดเจ็ตจะแนะนำรายการที่เกี่ยวข้องจากหัวข้อนับล้านใน Freebase.com หรือชุดย่อยของประเภทต่างๆ เช่น บุคคล สถานที่ หรือสัตว์ เมนูแบบเลื่อนลงของหัวข้อจะช่วยให้ผู้ใช้เลือกรายการที่ถูกต้องซึ่งระบุด้วยรหัส Freebase อย่างไม่ซ้ำกัน
ฟีเจอร์
- ใช้ได้กับหลายเบราว์เซอร์ - อิงตาม jQuery, ทดสอบใน IE7+, FF2+, Safari 3+ และ Chrome (jQuery เวอร์ชันขั้นต่ำคือ 1.4.4)
- ข้ามโดเมน ไม่จำเป็นต้องใช้พร็อกซีเซิร์ฟเวอร์เนื่องจากมี JSONP
- โฮสต์โดย Google ใน gstatic.com
- ฟรี! (เป็นไปตามข้อกำหนดของ Freebase และข้อกำหนดของ Google Developer API มาตรฐาน)
Freebase Suggest ในการใช้งานจริง
เว็บไซต์ที่ทราบว่าใช้การแนะนำของ Freebase
- รีวิวหนังสือจาก WSJ
- ContentTagger.org - การสาธิตการติดแท็กจากหนังสือพิมพ์ The Guardian
- geolocation.ws - ติดแท็กรูปภาพกับเอนทิตี Freebase
เหตุผลที่ควรใช้คำแนะนำของ Freebase
- การเติมข้อความอัตโนมัติช่วยให้ผู้ใช้พิมพ์น้อยลงเพื่อป้อนข้อมูลได้มากขึ้น
- การป้อนข้อมูลเป็นเรื่องสนุกและแม่นยำ
- ลดภาระทางปัญญาของผู้ใช้ด้วยรูปภาพและคำอธิบายในเมนูแบบเลื่อนลงของหัวข้อ
- ใช้ตัวระบุที่รัดกุมแทนคีย์เวิร์ดที่เป็นข้อความ ชื่อ "Sting" ไม่ชัดเจน แต่รหัส Freebase
/en/sting
และ/en/sting_1959
ชัดเจน - หลีกเลี่ยงการใช้ชื่อซ้ำสำหรับเอนทิตีเดียวกัน Puff Daddy, P. Diddy, Sean Combs ทั้งหมดหมายถึง
/en/sean_combs
การเพิ่มคำแนะนำของ Freebase ลงในเว็บไซต์
หากต้องการเพิ่มคำแนะนำของ Freebase ลงในหน้าเว็บ ให้ใส่โค้ดต่อไปนี้ในแหล่งที่มาของเว็บไซต์ นอกจากนี้ คุณยังขอรับและใช้คีย์ API เพื่อขยายฟังก์ชันการทำงานของ Freebase Suggest ได้ด้วย
โค้ดที่จะรวมไว้ในเว็บไซต์
ระบุข้อมูลต่อไปนี้ใน <head>
ของเอกสาร HTML
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/freebase/suggest/4_2/suggest.min.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script type="text/javascript" src="https://www.gstatic.com/freebase/suggest/4_2/suggest.min.js"></script> <script type="text/javascript"> $(function() { $("#myinput").suggest({filter:'(all type:/film/director)'}); }); </script>
จากนั้นใช้ช่องป้อนข้อมูลในเอกสาร <body>
ในลักษณะนี้
<input type="text" id="myinput"/>
การขอรับคีย์ API
การขอคีย์ API จะช่วยให้แอปพลิเคชันของคุณสร้างคำขอการแนะนำได้ หากไม่มีคีย์ API วิดเจ็ตจะใช้ได้สำหรับการทดสอบแบบจำกัด หากต้องการรับคีย์ ให้ทำตามวิธีการในหน้าเริ่มต้นใช้งาน
เมื่อได้รับคีย์แล้ว ให้ส่งคีย์ไปยัง Freebase Suggest ด้วยคำสั่งที่คล้ายกับตัวอย่างต่อไปนี้
$(function() { $("#myinput").suggest({ "key" : "<your api key>"}); });
ตัวเลือกการกำหนดค่า
ตารางต่อไปนี้จะอธิบายตัวเลือกการกำหนดค่าสำหรับคำแนะนำของ Freebase
ชื่อ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
ขั้นสูง | บูลีน | จริง | หากเป็นจริง Freebase Suggest จะแยกวิเคราะห์และจัดการคู่ name:value ในอินพุตเป็นข้อจำกัดของตัวกรองเพิ่มเติม เช่น สำหรับ 'bob type:artist contributed_to:"Love and Theft"' ระบบจะส่งข้อจำกัดของตัวกรองเพิ่มเติม '(all type:artist contributed_to:"Love and Theft")' ไปยังการค้นหา นอกจากนี้ เมื่อ advanced เป็นจริง Freebase Suggest จะจดจำรหัส Freebase และ MID เพื่อให้ผู้ใช้ค้นหาเอนทิตีโดยใช้รหัสหรือ MID ได้โดยตรง |
ตรงทั้งหมด | บูลีน | เท็จ | หากเป็นจริง จะระบุว่า Search API แสดงผลเฉพาะรายการที่ตรงกันทุกประการ (ของสิ่งที่อยู่ในอินพุต) ระบบจะส่งค่านี้ไปยัง Search API อย่างโปร่งใส |
ตัวกรอง | สตริง | Null | ระบุข้อจำกัดของตัวกรองการค้นหาเริ่มต้นที่จะส่งไปยัง Search API อย่างโปร่งใสเป็นพารามิเตอร์ตัวกรอง เช่น หากต้องการจำกัด Freebase Suggest ให้ค้นหาเฉพาะวิทยาลัยและ/หรือมหาวิทยาลัย ให้ใช้ "(all type:/education/university) " เป็นตัวกรอง ดูรายการตัวกรองการค้นหาที่มีให้ใช้งานทั้งหมดได้ที่ Search API หรือข้อจํากัดที่เป็นข้อความ |
แป้น | สตริง | Null | ระบุคีย์ API สำหรับ Search API เริ่มต้นที่ service_url + service_path ระบุ คุณขอรับได้จากคอนโซล API |
lang | สตริง | Null | พารามิเตอร์ lang ยอมรับรายการรหัสภาษาที่คั่นด้วยคอมมา ซึ่งจะทำให้ระบบค้นหาในทุกภาษาที่ระบุ และจัดอันดับผลลัพธ์ในภาษาแรกที่แสดงและแสดงในภาษาแรกของรายการที่มีชื่อสำหรับเอนทิตี ปัจจุบันรองรับ 18 ภาษา ได้แก่ en (อังกฤษ), es (สเปน), fr (ฝรั่งเศส), de (เยอรมัน), it (อิตาลี), pt (โปรตุเกส), zh (จีน), ja (ญี่ปุ่น), ko (เกาหลี), ru (รัสเซีย), sv (สวีเดน), fi (ฟินแลนด์), da (เดนมาร์ก), nl (ดัตช์), el (กรีก), ro (โรมาเนีย), tr (ตุรกี), hu (ฮังการี) ภาษาอังกฤษมีคำบรรยายแทนเสียงครอบคลุมมากที่สุดและเป็นภาษาเริ่มต้น ระบบจะส่งค่านี้ไปยัง Search API อย่างโปร่งใส |
การให้คะแนน | สตริง | Null | พารามิเตอร์ scoring ช่วยให้คุณควบคุมได้ว่าจะใช้คอมโพเนนต์คะแนนความเกี่ยวข้องใดในการคำนวณคะแนนสุดท้าย ระบบจะส่งค่านี้ไปยัง Search API อย่างโปร่งใส
|
สะกด | สตริง | always |
ค่าที่ใช้ได้คือ always , no_results , no_spelling หากมีการขอการสะกดคำและผลการค้นหาแสดงการแก้ไขการสะกดคำ Freebase Suggest จะแสดงการแก้ไขในรายการคำแนะนำ ระบบจะส่งค่านี้ไปยังบริการค้นหาอย่างโปร่งใส |
เมนูแบบเลื่อนออก | บูลีน bottom |
จริง | กำหนดว่าจะแสดงคำอธิบายแบบฟลายเอาต์เมื่อวางเมาส์หรือไม่ หาก bottom ให้แสดงเมนูย่อยที่ด้านล่างของรายการคำแนะนำ หากรายการคำแนะนำแสดงอยู่เหนือช่องป้อนข้อมูล ฟลายเอาต์จะแสดงอยู่ด้านบนของรายการ หากเป็นจริง ฟีเจอร์แนะนำจะพยายามอย่างเต็มที่เพื่อแสดงเมนูแบบเลื่อนลงทางด้านซ้ายหรือขวาของรายการ
|
suggest_new | สตริง | Null | ข้อความที่จะแสดงใต้รายการคำแนะนำ เมื่อเลือกแล้ว ระบบจะทริกเกอร์ fb-select-new |
CSS | วัตถุ | เขียนทับชื่อคลาส CSS เริ่มต้นที่ใช้สำหรับองค์ประกอบต่างๆ ของ Freebase Suggest ดูรายละเอียดได้ที่การแก้ไข CSS | |
css_prefix | สตริง | Null | คุณระบุคำนำหน้าที่จะใส่ไว้หน้าชื่อคลาสขององค์ประกอบ Suggest ได้ เช่น หาก css_prefix คือ "foo- " ชื่อคอนเทนเนอร์จะเป็น "foo-fbs-pane " และ "foo-fbs-flyoutpane " |
show_id | บูลีน | จริง | แสดงค่า 'notable ' ที่การค้นหาแสดงผล แต่หากไม่มีและเป็นจริง ระบบจะแสดงรหัสของรายการ |
service_url | สตริง | ค่าคือ https://www.googleapis.com/freebase/v1 |
นี่คือ URL ฐานสำหรับบริการคำแนะนำ |
service_path | สตริง | /search |
service_url + service_path = URL ไปยังบริการคำแนะนำ |
flyout_service_url | สตริง | Null | URL ฐานสำหรับบริการเมนูแบบลอย หากเป็น Null ค่าเริ่มต้นจะเป็น service_url |
flyout_service_path | สตริง | ค่าคือ /search?filter=(all mid:${id})&output=(notable:/client/summary description type)&key=${key} |
flyout_service_url + flyout_service_path = URL ไปยังบริการเมนูแบบเลื่อนลง ระบบจะแทนที่ "${id} " และ "{key} " ด้วยรหัสสินค้าที่วางเมาส์และคีย์ API ตามลำดับ |
flyout_image_service_url | สตริง | Null | URL ฐานสำหรับรูปภาพในฟลายเอาต์ หากเป็น Null ค่าเริ่มต้นจะเป็น service_url |
flyout_image_service_path | สตริง | ค่าคือ /image${id}?maxwidth=75&key=${key}&errorid=/freebase/no_image_png |
flyout_image_service_url + flyout_image_service_path = URL ไปยังบริการรูปภาพ ระบบจะแทนที่ '${id} ' และ '{key} ' ด้วยรหัสสินค้าที่วางเมาส์และคีย์ API ตามลำดับ |
flyout_parent | สตริง (ตัวเลือก jQuery) | Null | โดยค่าเริ่มต้น ระบบจะต่อท้ายคอนเทนเนอร์เมนูแบบเลื่อนลงกับส่วนเนื้อหาของเอกสารและวางตำแหน่งแบบสัมบูรณ์ flyout_parent ระบุองค์ประกอบหลักอื่นและเมนูแบบเลื่อนลงจะไม่ได้รับการกำหนดตำแหน่งแบบสัมบูรณ์ |
จัดแนว | สตริง | Null | หากไม่ได้ตั้งค่า align รายการคำแนะนำจะจัดแนวไปทาง "ซ้าย" หรือ "ขวา" ของช่องป้อนข้อมูล ทั้งนี้ขึ้นอยู่กับตำแหน่งในเอกสาร หากต้องการลบล้างลักษณะการทำงานนี้และตั้งค่าการจัดแนวอย่างชัดเจน ให้ตั้งค่า align เป็น "left " หรือ "right " |
สถานะ | Array[4](String) | ["เริ่มพิมพ์เพื่อรับคำแนะนำ...", "กำลังค้นหา...", "เลือกรายการจากรายการ", "ขออภัย เกิดข้อผิดพลาด โปรดลองอีกครั้งในภายหลัง"] | ข้อความสถานะที่ปรากฏในขั้นตอนต่างๆ 4 ขั้นตอนของคำแนะนำ [0] เมื่อช่องป้อนข้อมูลว่างเปล่าและได้รับโฟกัส [1] เมื่อเรียกข้อมูลผลการค้นหา [2] เมื่อแสดงผลการค้นหา [3] เมื่อมีข้อผิดพลาดจากบริการคำแนะนำ คุณสามารถลบล้างข้อความสถานะเริ่มต้นเหล่านี้ได้โดยส่งอาร์เรย์ของสตริงอื่นที่สอดคล้องกับ 4 ขั้นตอนที่แตกต่างกัน |
ระดับบนสุด | สตริง (ตัวเลือก jQuery) | Null | โดยค่าเริ่มต้น ระบบจะต่อท้ายรายการคำแนะนำไว้ที่เนื้อหาของเอกสารและวางตำแหน่งแบบสัมบูรณ์ ใช้ parent เพื่อระบุองค์ประกอบระดับบนสุดอื่น แล้วรายการจะไม่ได้รับการกำหนดตำแหน่งแบบสัมบูรณ์ |
animate | บูลีน | เท็จ | หากเป็นจริง การแสดงรายการคำแนะนำจะเคลื่อนไหวโดยใช้เอฟเฟกต์ jQuery slideDown |
xhr_delay | จำนวนเต็ม (มิลลิวินาที) | 200 |
ระบุระยะเวลาก่อนแสดงผลลัพธ์ ซึ่งจะเป็นประโยชน์ในกรณีที่ mql_filters มีความซับซ้อนและ Suggest API อาจใช้เวลาในการตอบนานกว่าหรือนานพอๆ กับการหน่วงเวลาที่ฮาร์ดโค้ดไว้ ซึ่งจะทำให้ประสบการณ์ของผู้ใช้แย่ลงและเกิดภาระงานที่ไม่จำเป็น |
zIndex | จำนวนเต็ม | Null | กำหนด z-index ของคอนเทนเนอร์ด้านนอกสุด (fbs-pane , fbs-flyoutpane ) ซึ่งจะมีประโยชน์เมื่อใช้คำแนะนำของ Freebase ในกล่องโต้ตอบเพื่อให้องค์ประกอบคำแนะนำแสดงที่ด้านบน |
การแก้ไข CSS
คุณสามารถลบล้างคลาส CSS เริ่มต้นที่ใช้โดยคำแนะนำของ Freebase ได้โดยส่งแผนที่ของค่าอื่นสำหรับชื่อคลาส CSS โดยใช้ตัวเลือกการกำหนดค่า css ตารางต่อไปนี้อธิบายคลาสใน CSS เริ่มต้น
pane | คอนเทนเนอร์ด้านนอกของรายการคำแนะนำ
ค่าเริ่มต้น: " |
list | รายการคำแนะนำ
ค่าเริ่มต้น: " |
item | แนะนำรายการ
ค่าเริ่มต้น: " |
item_name | องค์ประกอบที่มีชื่อของรายการ
ค่าเริ่มต้น: " |
เลือกแล้ว | รายการที่ไฮไลต์/เลือกอยู่ในปัจจุบัน ค่าเริ่มต้น: "fbs-selected " |
สถานะ | องค์ประกอบที่มีข้อความสถานะ ค่าเริ่มต้น: "fbs-status " |
item_type | องค์ประกอบที่มีประเภทที่โดดเด่นของรายการ ค่าเริ่มต้น: "fbs-item-type " |
flyoutpane | คอนเทนเนอร์ด้านนอกของเมนูแบบเลื่อนลง
ค่าเริ่มต้น: " |
เช่น
$("#myinput").suggest({ "css": { "pane": "custom-pane-class", "list": "custom-list-class" } });
วิธีการทำงานของกิจกรรม
Freebase Suggest จะทริกเกอร์เหตุการณ์ต่อไปนี้ภายในบริบทของอินพุตที่เริ่มต้นด้วย
fb-select
- เมื่อมีการเลือกรายการจากรายการคำแนะนำ เหตุการณ์นี้มาพร้อมกับออบเจ็กต์ข้อมูลที่ data.name
และ data.id
แสดงชื่อและรหัสของสินค้าที่เลือก
$("#myinput").suggest().bind("fb-select", function(e, data) { ... });
fb-select-new
- เมื่อเปิดใช้ตัวเลือก suggest_new
ระบบจะทริกเกอร์เหตุการณ์นี้เมื่อมีการเลือกรายการ suggest_new เหตุการณ์จะมาพร้อมกับค่าอินพุต
$("#myinput").suggest({'suggest_new': 'This is the suggest new text'}).bind("fb-select-new", function(e, val) { ... });
คำถามที่พบบ่อยและข้อมูลเพิ่มเติม
เรายินดีรับคำถาม รายงานข้อบกพร่อง และความคิดเห็นในกลุ่ม Google สำหรับนักพัฒนา Freebase หรือรายการปัญหา (เลือกคอมโพเนนต์ "ค้นหา/แนะนำ")
- ฉันเพิ่งสร้างหัวข้อใหม่ แต่หัวข้อนั้นไม่ปรากฏในฟีเจอร์แนะนำ เกิดอะไรขึ้น
Freebase Suggest ใช้ Search API เพื่อแสดงผลลัพธ์ และจะอัปเดตผลลัพธ์แบบเกือบเรียลไทม์ โดยปกติแล้ว หัวข้อใหม่จะปรากฏภายใน 1 นาที แต่บางครั้งอาจใช้เวลานานกว่านั้นหากระบบมีภาระงานสูง
ตัวอย่างและสูตร
- สูตรอาหารแนะนำของ Freebase - แชร์เคล็ดลับในการใช้ฟีเจอร์แนะนำใน Wiki ของเรา
การใช้งานพื้นฐาน
$("#example1") .suggest() .bind("fb-select", function(e, data) { alert(data.name + ", " + data.id); });
แนะนำใหม่
$("#example2") .suggest({ "suggest_new": "Click on me if you don't see anything in the list" }) .bind("fb-select", function(e, data) { alert(data.name + ", " + data.id); }) .bind("fb-select-new", function(e, val) { alert("Suggest new: " + val); });
จำกัดคำแนะนำโดยใช้ตัวกรอง
แนะนำภาพยนตร์ที่กำกับโดยสตีเวน สปีลเบิร์ก
$("#example5") .suggest({ "filter": "(all type:/film/film contributor:\"Steven Spielberg #directed_by\")" }) .bind("fb-select", function(e, data) { alert(data.name + ", " + data.id); });
การกรองจากกล่องข้อความ
คุณสามารถกรองผลลัพธ์ได้โดยพิมพ์ข้อจำกัดของตัวกรองลงในช่องคำแนะนำโดยตรง เช่น หากต้องการค้นหาหนังสือเกี่ยวกับการทำสวน ให้ลองค้นหาดังนี้
gardening type:/book/book gardening type:book
คุณสามารถใช้ข้อจํากัดของเมตาสคีมาการค้นหาเพื่อกรองผลลัพธ์ได้ ตัวอย่างเช่น หากต้องการค้นหาผู้ที่ "contributed_to
" ภาพยนตร์เรื่อง "Saving Private Ryan" ให้ลองใช้คำสั่งต่อไปนี้
contributed_to:"Saving Private Ryan" type:/people/person
ตามที่ระบุไว้ในตัวเลือกการกำหนดค่า lang
, scoring
, spell
, exact
จะส่งไปยัง Search API อย่างโปร่งใส คุณยังเขียนทับได้โดยตรงด้วย ตัวอย่างเช่น หากเริ่มต้น Freebase Suggest ด้วย lang:"en"
และต้องการค้นหาชื่อภาษาฝรั่งเศสด้วย ให้ลองใช้คำสั่งต่อไปนี้
babar lang:fr,en
ดูข้อจำกัดในการกรองและการค้นหาเพิ่มเติมได้ที่ตำราการค้นหา