ویجت جستجوی Freebase

  1. درباره Freebase Suggest
  2. اضافه کردن Freebase Suggest به سایت شما
  3. گزینه های پیکربندی
  4. تغییر CSS
  5. رویدادها چگونه کار می کنند
  6. اطلاعات بیشتر و سوالات متداول
  7. نمونه ها و دستور العمل ها

درباره Freebase Suggest

Freebase Suggest یک افزونه جی کوئری است که تکمیل خودکار موضوع Freebase را به کادرهای جستجو در سایت شما اضافه می کند. کاربران شروع به تایپ متن می کنند و ویجت مطابقت های مرتبط را از میلیون ها موضوع در Freebase.com یا هر زیر مجموعه ای از انواع مانند افراد، مکان ها یا حیوانات پیشنهاد می کند. پخش موضوعی به کاربر کمک می کند تا مورد درستی را انتخاب کند که منحصراً با شناسه Freebase مشخص شده است.

Freebase Suggest.png

امکانات

  • مرورگر متقابل - مبتنی بر jQuery ، آزمایش شده بر روی IE7+، FF2+، Safari 3+ و Chrome (نسخه jquery حداقل 1.4.4 است)
  • متقابل دامنه. به لطف JSONP نیازی به سرورهای پروکسی نیست.
  • توسط گوگل در gstatic.com میزبانی شده است
  • رایگان! (شرایط استاندارد Freebase و شرایط API توسعه دهنده Google اعمال می شود.)

آن را امتحان کنید!

Freebase Suggest in the wild

سایت‌هایی که از Freebase Suggest استفاده می‌کنند:

چرا از Freebase Suggest استفاده کنیم؟

  • با تکمیل خودکار، کاربران شما کمتر تایپ می کنند تا داده های بیشتری وارد کنند.
  • ورود داده ها سرگرم کننده و دقیق است!
  • به لطف تصاویر و توضیحات موجود در قسمت های موضوعی، بار شناختی کاربران خود را کاهش دهید.
  • به جای کلمات کلیدی متنی از شناسه های قوی استفاده کنید. نام "Sting" مبهم است، اما شناسه های Freebase /en/sting و /en/sting_1959 این گونه نیستند.
  • از نام های تکراری برای یک موجودیت خودداری کنید. پاف ددی، پی دیدی، شان کامبز همگی به /en/sean_combs می کنند.

اضافه کردن Freebase Suggest به وب سایت شما

برای افزودن Freebase Suggest به صفحه وب خود، کد زیر را در منبع وب سایت خود قرار دهید. همچنین می‌توانید یک کلید 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 Suggest را توضیح می دهد.

نام تایپ کنید پیش فرض شرح
پیشرفته بولی درست است، واقعی اگر درست باشد، Freebase Suggest جفت‌های name:value درون خطی را به عنوان محدودیت‌های فیلتر اضافی تجزیه و تحلیل می‌کند. به عنوان مثال، برای 'bob type:artist contributed_to:"Love and Theft"' ، یک محدودیت فیلتر اضافی، '(all type:artist contributed_to:"Love and Theft")' به جستجو ارسال می شود. به‌علاوه، وقتی «پیشرفته» درست باشد، Freebase Suggest شناسه‌های Freebase و MID را تشخیص می‌دهد تا بتوان مستقیماً یک موجودیت را با شناسه یا MID آن جستجو کرد.
دقیق بولی نادرست اگر درست باشد، مشخص می‌کند که Search API فقط مطابقت‌های دقیق (با آنچه در ورودی است) را برمی‌گرداند. این مقدار به طور شفاف به Search API منتقل می شود.
فیلتر رشته خالی محدودیت(های) فیلتر جستجوی پیش فرض را مشخص کنید که به طور شفاف به عنوان پارامتر(های) فیلتر به Search API ارسال می شود. به عنوان مثال، برای محدود کردن Freebase Suggest به جستجوی تنها در کالج‌ها و/یا دانشگاه‌ها، از " (all type:/education/university) " به عنوان فیلتر استفاده کنید. برای فهرست جامعی از فیلترهای جستجوی موجود، جستجوی API یا محدودیت‌های متنی را ببینید.
کلید رشته خالی یک کلید API برای API جستجوی پیش‌فرض مشخص شده توسط service_url + service_path ارائه کنید. می توانید یکی از APIs Console را دریافت کنید.
زبان رشته خالی پارامتر lang لیستی از کدهای زبان جدا شده با کاما را می پذیرد که باعث می شود جستجو در تمام زبان های مشخص شده انجام شود و نتایج در اولین زبان فهرست شده رتبه بندی شوند و در اولین زبان لیست نمایش داده شوند که نامی برای آن دارد. وجود، موجودیت. در حال حاضر، 18 زبان پشتیبانی می شود: en (انگلیسی)، es (اسپانیایی)، fr (فرانسوی)، de (آلمانی)، it (ایتالیایی)، pt (پرتغالی)، zh (چینی)، ja (ژاپنی)، ko (کره ای) ru (روسی)، sv (سوئدی)، fi (فنلاندی)، da (دانمارکی)، nl (هلندی)، el (یونانی)، ro (رومانیایی)، tr (ترکی)، hu (مجارستانی). انگلیسی تا حد زیادی بیشترین پوشش را دارد و زبان پیش فرض است. این مقدار به طور شفاف به Search API منتقل می شود.
به ثمر رساندن رشته خالی پارامتر scoring این امکان را فراهم می‌کند که از چه مؤلفه‌های امتیاز مربوط برای محاسبه امتیاز نهایی استفاده می‌شود. این مقدار به طور شفاف به Search API منتقل می شود.
  • entity : از امتیازات مربوط به FREEBASE و Google استفاده کنید و امتیازات گمشده Google را به صورت پیش فرض 1.0 قرار دهید. این پیش فرض است.
  • freebase : فقط از امتیاز ارتباط Freebase استفاده کنید.
  • schema : هنگام جستجوی موجودیت های طرحواره مانند انواع، ویژگی ها یا دامنه ها استفاده کنید. تعداد پیوند موجودیت های طرحواره به طور متفاوتی محاسبه می شود.
هجی کردن رشته always مقادیر معتبر always ، no_results ، no_spelling . اگر املا درخواست شود و جستجو یک تصحیح املایی را نشان دهد، Freebase Suggest تصحیح را در لیست پیشنهاد نمایش می دهد. این مقدار به طور شفاف به سرویس جستجو منتقل می شود.
پرواز بولی، bottom درست است، واقعی تعیین می‌کند که آیا توضیح پرواز در شناور نشان داده شود یا نه. اگر bottom است، پرواز را در پایین لیست پیشنهاد نشان دهید. اگر لیست پیشنهاد در بالای کادر ورودی نمایش داده شود، Flyout در بالای لیست نمایش داده می شود. اگر درست باشد، Suggest تمام تلاش خود را می‌کند تا فلای اوت را در سمت چپ یا راست لیست نشان دهد.
پیشنهاد_جدید رشته خالی متنی که در زیر لیست پیشنهادات نمایش داده می شود. در انتخاب، fb-select-new فعال می شود.
css هدف - شی نام‌های کلاس CSS پیش‌فرض مورد استفاده برای عناصر مختلف Freebase Suggest را بازنویسی کنید. برای جزئیات بیشتر به اصلاح CSS مراجعه کنید.
css_prefix رشته خالی می‌توانید پیشوندی را برای نام کلاس‌های عناصر Suggest تعیین کنید. برای مثال اگر css_prefix " foo- " باشد، نام کانتینرها " foo-fbs-pane " و " foo-fbs-flyoutpane " خواهد بود.
show_id بولی درست است، واقعی مقدار " notable " را که توسط جستجو برگردانده شده است را نمایش می دهد. اما اگر در دسترس نباشد و این درست باشد، شناسه مورد را نمایش می دهد.
service_url رشته مقدار https://www.googleapis.com/freebase/v1 است این نشانی وب پایه سرویس پیشنهاد است.
Service_path رشته /search service_url + service_path = URL به سرویس پیشنهاد.
flyout_service_url رشته خالی URL پایه برای سرویس flyout. اگر 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 = آدرس اینترنتی به سرویس flyout. « ${id} » و « {key} » به ترتیب با شناسه مورد و کلید API جایگزین می‌شوند.
flyout_image_service_url رشته خالی 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 = آدرس اینترنتی سرویس تصویر. « ${id} » و « {key} » به ترتیب با شناسه مورد و کلید API جایگزین می‌شوند.
flyout_parent رشته (انتخابگر جی کوئری) خالی به‌طور پیش‌فرض، محفظه فلای‌آوت به بدنه سند اضافه می‌شود و کاملاً در موقعیت قرار می‌گیرد. flyout_parent یک والد متفاوت را مشخص می کند و flyout کاملاً در موقعیت قرار نخواهد گرفت.
تراز کردن رشته خالی اگر align تنظیم نشده باشد، لیست پیشنهادات بسته به موقعیت آن در سند، در "چپ" یا "راست" کادر ورودی تراز می شود. برای نادیده گرفتن این رفتار و تنظیم تراز آن به صراحت، align را روی " left " یا " right " تنظیم کنید.
وضعیت آرایه[4] (رشته) ["شروع تایپ کردن برای دریافت پیشنهادات..."، "جستجو..."، "انتخاب مورد از لیست:"، "متأسفیم، مشکلی پیش آمد. لطفاً بعداً دوباره امتحان کنید"] پیام های وضعیتی که در 4 مرحله مختلف Suggest ظاهر می شوند. [0] وقتی کادر ورودی خالی است و فوکوس می‌شود. [1] هنگام بازیابی نتایج، [2] هنگام نمایش نتایج، [3] هنگامی که خطایی از سرویس پیشنهاد وجود دارد. می‌توانید این پیام‌های وضعیت پیش‌فرض را با ارسال یک آرایه رشته‌ای متفاوت که مربوط به 4 مرحله مختلف است، لغو کنید.
والدین رشته (انتخابگر جی کوئری) خالی به طور پیش‌فرض، فهرست پیشنهاد به بدنه سند اضافه می‌شود و کاملاً در موقعیت قرار می‌گیرد. از parent برای تعیین والد متفاوت استفاده کنید و لیست به طور مطلق در موقعیت قرار نخواهد گرفت.
جان دادن بولی نادرست اگر درست باشد، نمایش لیست پیشنهادات با استفاده از افکت slideDown jQuery متحرک خواهد شد.
xhr_delay عدد صحیح (ms) 200 یک تاخیر قبل از بازگشت نتایج را مشخص می کند. این در مواردی مفید است که mql_filters پیچیده هستند و پاسخگویی به API پیشنهادی ممکن است زمان بیشتری یا مشابهی نسبت به تأخیر کدگذاری شده طول بکشد و باعث کاهش تجربه کاربر و بار غیرضروری شود.
zIndex عدد صحیح خالی z-index بیشتر ظروف بیرونی را تنظیم می کند ( fbs-pane ، fbs-flyoutpane ). این هنگام استفاده از Freebase Suggest در کادرهای محاوره ای مفید است تا عناصر پیشنهاد در بالا نمایش داده شوند.

تغییر CSS

کلاس‌های پیش‌فرض CSS که توسط Freebase Suggest استفاده می‌شوند را می‌توان با ارسال نقشه‌ای از مقادیر متناوب برای نام کلاس‌های CSS با استفاده از گزینه پیکربندی css بیش‌ازحد کرد. جدول زیر کلاس های CSS پیش فرض را توضیح می دهد.

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

پیش فرض: " fbs-pane "

فهرست لیست پیشنهادات

پیش فرض: ' fbs-list '

مورد موارد فهرست پیشنهاد.

پیش فرض: " fbs-item ".

نام آیتم عنصر حاوی نام مورد.

پیش فرض: " fbs-item-name "

انتخاب شد مورد برجسته/انتخاب شده فعلی. پیش فرض: ' fbs-selected '.
وضعیت عنصر حاوی پیام های وضعیت. پیش فرض: ' fbs-status '.
نوع آیتم عنصر حاوی نوع قابل توجه یک آیتم. پیش فرض: ' fbs-item-type '.
فلای اوت محفظه بیرونی پرنده.

پیش فرض: " fbs-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 Developers Freebase یا فهرست مشکلات بسیار استقبال می‌شود (جزء «جستجو/پیشنهاد» را انتخاب کنید).

من به تازگی یک موضوع جدید ایجاد کرده ام، اما در Suggest نمایش داده نمی شود - چه خبر است؟

Freebase Suggest از جستجوی API برای ارائه نتایج خود استفاده می کند و تقریباً در زمان واقعی به روز می شود. موضوعات جدید معمولاً در عرض یک دقیقه یا بیشتر ظاهر می‌شوند، اما اگر سیستم تحت بار زیاد باشد، ممکن است طولانی‌تر شود.

نمونه ها و دستور العمل ها

  • Freebase Suggest Recipes - نکات خود را در مورد استفاده از Suggest در ویکی ما به اشتراک بگذارید.

استفاده اساسی

$("#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

در واقع، شما می توانید از هر محدودیت Search Metaschema برای فیلتر کردن نتایج خود استفاده کنید. به عنوان مثال، برای جستجوی همه افرادی که "در فیلم "نجات سرباز رایان" contributed_to اند، سعی کنید:

contributed_to:"Saving Private Ryan" type:/people/person

همانطور که در گزینه های پیکربندی بیان شد، lang ، scoring ، spell ، exact به طور شفاف به API جستجو منتقل می شود. همچنین می توانید آنها را به صورت درون خطی بازنویسی کنید. به عنوان مثال، اگر Freebase Suggest با lang:"en" مقداردهی اولیه شده است و می خواهید نام های فرانسوی را نیز جستجو کنید، سعی کنید:

babar lang:fr,en

برای فیلترهای اضافی و محدودیت‌های جستجو، لطفاً به جستجوی کتاب آشپزی مراجعه کنید.