نیپ شماره 50

توانایی جستجو

پیش نویس ‍‍دلبخواهی

چکیده

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

فیلد search در فیلتر

یک فیلد جدید search به فیلتر در پیام REQ افزده میشود:

{
  // other fields on filter object...
  "search": <string>
}

search یک رشته است که پرسش را (query) در حالت قابل خواندن توسط انسان نشان میدهد برای نمونه "بهترین اپ های نوستر". رله ها باید پرسش را با بهترین توانایی خود تفسیر کنند و رویداد هایی که با ان پرسش سازگاری دارند را بازگردانند. رله ها باید سازگاری را با فیلد .content بررسی کنند. انها ممکن است این سازگاری را درصورت که منطقی باشد برای برخی از گونه ها برای دیگیر فیلد ها هم بررسی کنند.

رله ها باید نتایج را با ترتیب نزولی و بر اساس کیفیت جستجو بازگردانند نه بر اساس created_at. فیلد limit باید پس ترتیب بندی بر اساس کیفیت جستجو اعمال شود. یک رشته پرسش (query string) ممکن است شامل جفت های key:value باشد (جدا شده توسط یک :) که به انها افزونه گفته میشود. رله ها باید افزونه های که پشتیبانی نمی کنند را نادیده بگیرند.

کلاینت ها ممکن است از ids, kinds یا فیلد های دیگر فیلتر استفاده کنند تا نتیجه جستجو را به برخی از رویداد ها محدود کنند.

کلاینت ها باید از فیلد supported_nips استفاده کنند تا بدانند آیا یک رله از فیلتر جستجو پشتیبانی می کند یا خیر. اگر کلاینت ها آماده فیلتر کردن پاسخ‌های اضافی از رله‌هایی هستند که از این نیپ پشتیبانی نمی‌کنند، ممکن است درخواست‌های فیلتر جستجو را به هر رله ارسال کنند.

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

کلاینت ها ممکن است بررسی کنند که رویدادهای بازگردانده شده توسط یک رله با پرسش (query) مشخص شده با مورد استفاده کلاینت سازگار باشد و ممکن است درخواست به رله هایی را که دقت پایینی دارند را متوقف کنند.

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

افزونه ها

  • include:spam - turn off spam filtering, if it was enabled by default
  • domain:<domain> - include only events from users whose valid nip05 domain matches the domain
  • language:<two letter ISO 639-1 language code> - include only events of a specified language
  • sentiment:<negative/neutral/positive> - include only events of a specific sentiment
  • nsfw:<true/false> - include or exclude nsfw events (default: true)