ما یک موتور جستجو با MeiliSearch و جاوا اسکریپت ساختیم: در اینجا چگونگی شما می توانید خیلی زیاد باشید

عکس پروفایل نویسنده

@michielmuldersمیشیل مولدرز

نویسنده فنی و بازاریابی | توسعه دهنده Blockchain و Backend

برای یافتن برنده جایزه نوبل شیمی برای سال 1979 تلاش می کنید؟ آموزش جستجوی سریع و سریع JavaScript در MeiliSearch را برای یافتن برندگان جایزه نوبل در مدت زمان چند میلی ثانیه امتحان کنید. 🌬️

MeiliSearch JS یک مشتری برای MeiliSearch است که با JavaScript نوشته شده است. MeiliSearch یک موتور جستجوی قدرتمند ، سریع ، منبع باز ، کاربرد آسان و استقرار است. هر دو جستجو و نمایه سازی بسیار قابل تنظیم هستند. ویژگی هایی مانند تحمل تایپ ، فیلترها و مترادف خارج از جعبه https://hackernoon.com/u/michielmuldershe-box ارائه می شود.

یک نمونه کار را می توان در یافت codeSandBox و در meilisearch-vue فهرست راهنما.

هدف این پروژه این است که به شما یاد دهد چگونه:

  • یک فهرست جدید ایجاد کنید
  • تنظیمات را برای فهرست خود تغییر دهید
  • داده ها را به فهرست خود اضافه کنید
  • از کلمات توقف چشم پوشی کنید
  • فیلترهای وجهی را برای فیلتر کردن سریعتر داده فعال کنید

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

ابتدا ، بیایید نگاهی به الزامات بیندازیم.

الزامات

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

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

نصب پروژه و نصب MeiliSearch-js

برای پیگیری ، ما باید پروژه JavaScript خود را تنظیم کرده و MeiliSearch-js را نصب کنیم. یک پوشه جدید ایجاد کنید و دستور زیر را در ترمینال خود اجرا کنید.

این تنظیم پروژه شما را آماده می کند. بعد ، می توانیم وابستگی MeiliSearch-js را اضافه کنیم.

در آخر ، بیایید فایلی به نام index.js در پروژه شما ایجاد کنیم. ما از این فایل برای افزودن کد JavaScript خود استفاده خواهیم کرد.

خوب ، بیایید شروع کنیم!

مرحله 1: اولین فهرست خود را ایجاد کنید

اول از همه ، بیایید با آماده سازی شروع کنیم. ما در اینجا فرض می کنیم که شما یک نمونه در حال اجرا از MeiliSearch دارید و می توانید از طریق localhost یا آدرس IP عمومی خود به این دسترسی داشته باشید.

مهم: برای ساده نگه داشتن همه چیز ، ما از یک کلید اصلی استفاده نمی کنیم. یک کلید اصلی به شما امکان می دهد از تمام نقاط پایانی API برای نمونه Meilisearch خود محافظت کنید. ما توصیه می کنیم هنگام استفاده از Meilisearch در تولید یا میزبانی از طریق یک آدرس IP قابل دسترسی عمومی – به عنوان مثال قطره DigitalOcean ، یک کلید اصلی تنظیم کنید.

برای تأیید اینکه آیا می توانید به نمونه MeiliSearch خود دسترسی پیدا کنید ، شاخص های موجود را جستجو کنید. اگر هیچ شاخصی ایجاد نکرده اید ، باید یک آرایه خالی را ببینید. در زیر دستور cURL را می توانید از ترمینال خود اجرا کنید.

curl http://127.0.0.1:7700/indexes

حال ، بیایید ویرایش خود را انجام دهیم

index.js

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

host

ویژگی آدرس IP نمونه MeiliSearch شما را می پذیرد.

const MeiliSearch = require('meilisearch')
 
const main = async () => {
    const client = new MeiliSearch({
        host: 'http://127.0.0.1:7700'
    })
 
    const indexes = await client.listIndexes()
    console.log(indexes)
}
 
main()

توجه داشته باشید که ما چند کد اضافی اضافه کرده ایم که از

client

برای جستجوی تمام نمایه ها شی object و سپس نتیجه را چاپ می کند.

برای اجرای فایل ، می توانید آن را با استفاده از

node

فرمان دادن

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

prizes

. ما می توانیم از

createIndex

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

const MeiliSearch = require('meilisearch')
 
const main = async () => {
    const client = new MeiliSearch({
        host: 'http://127.0.0.1:7700'
    })
 
    const indexes = await client.listIndexes()
    console.log(indexes)
 
    await client.createIndex('prizes')
 
    const updatedIndexes = await client.listIndexes()
    console.log(updatedIndexes)
}
 
main()

باید نتیجه زیر را در ترمینال خود چاپ کنید.

[ 
  { 
    name: 'prizes',
    uid: 'prizes',
    createdAt: '2020-10-21T16:08:23.052004747Z',
    updatedAt: '2020-10-21T16:08:23.052024846Z',
    primaryKey: null 
  }
]

توجه داشته باشید:

name

خاصیت اختیاری است به طور پیش فرض ، Meilisearch تنظیم می کند

name

خاصیت برابر با

uid

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

uid

ویژگی.

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

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

مرحله 2: افزودن مجموعه داده جوایز نوبل

اول از همه ، بیایید به طور خلاصه مجموعه داده را بررسی کنیم. مجموعه داده اصلی که برای این مثال استفاده کردیم از nobelprize.org می آید ، با این حال ، مجموعه داده را کمی متناسب با مورد استفاده خود اصلاح کرده ایم.

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

هر شی شامل یک شناسه است که به عنوان کلید اصلی خدمت می کند. MeiliSearch به طور خودکار خصوصیاتی را که حاوی کلمه است جستجو می کند

id

، مانند

prizeId

یا

objectId

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

id

، هنوز هم می توانید یک کلید اصلی را به صورت دستی تنظیم کنید.

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

{
    id: "991",
    year: "2020",
    category: "chemistry",
    firstname: "Emmanuelle",
    surname: "Charpentier",
    motivation: "for the development of a method for genome editing",
    share: "2"
}

حال ، بیایید مجموعه داده را با استفاده از cURL به عنوان یک پرونده JSON بارگیری کنیم. ما از

-o

ویژگی برای تعریف یک پرونده خروجی برای محتوای بارگیری شده.

curl -L https://gist.githubusercontent.com/michielmulders/5328ffcabd04bdcaded389a278728304/raw/3c172f0bbc248f99096c2e34653432b983704f07/prizes.json -o prizes.json

بعد ، ما باید مجموعه داده را به مثال MeiliSearch اضافه کنیم. بیایید مجموعه داده را در

prizes

فهرست مطالب. توجه داشته باشید که هنگام اضافه کردن ، URL کمی تغییر کرده است

documents

به

prizes

فهرست مطالب:

indexes/prizes/documents

. مطمئن شوید که نام پرونده برای

--data

ویژگی با نام پرونده پرونده JSON جوایز شما مطابقت دارد.

curl -i -X POST 'http://127.0.0.1:7700/indexes/prizes/documents' 
  --header 'content-type: application/json' 
  --data @prizes.json

برای بررسی اینکه آیا داده ها با موفقیت بارگذاری شده اند ، بیایید همه اسناد را جستجو کنیم. شما باید تمام اشیا prize جایزه نوبل را ببینید.

curl http://127.0.0.1:7700/indexes/prizes/documents

موفق باشید! در مرحله بعدی ، بیایید از برخی از کد ها برای اضافه کردن یک سند اضافی به خود استفاده کنیم

prizes

فهرست مطالب.

مرحله 2.1: اسناد را با استفاده از سرویس گیرنده MeiliSearch-js اضافه کنید

ما فقط اسناد را با استفاده از ترمینال خود اضافه کرده ایم. وقت آن است که با استفاده از کد JS یک سند اضافی اضافه کنید. بیایید آرایه ای را تعریف کنیم که شامل اسناد جدیدی باشد که می خواهیم به خود اضافه کنیم

prizes

فهرست مطالب. توجه داشته باشید ، ما ابتدا باید فهرست خود را بازیابی کنیم تا بتوانیم از این شی index برای افزودن اسناد استفاده کنیم.

const MeiliSearch = require('meilisearch')
 
const main = async () => {
    const client = new MeiliSearch({
        host: 'http://127.0.0.1:7700'
    })
 
    const index = client.getIndex('prizes')
    const documents = [
        {
            id: '12345',
            year: '2021',
            category: 'chemistry',
            firstname: 'Your',
            surname: 'Name',
            motivation: 'for the development of a new method',
            share: '1'
        }
    ]
 
    let response = await index.addDocuments(documents)
    console.log(response) // => { "updateId": 0 }
}
 
main()

وقتی سندی جدید اضافه می کنید ، Meilisearch یک شی object حاوی یک را برمی گرداند

updateId

. با استفاده از روش های به روزرسانی می توانید روند افزودن سند را تا زمان پردازش یا خرابی آن ردیابی کنید.

در مرحله 3 ، بیایید یاد بگیریم که چگونه اسناد را جستجو کنیم.

مرحله 3: اسناد جایزه نوبل را جستجو کنید

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

chemisytr

برای نشان دادن تحمل نوع MeiliSearch.

const MeiliSearch = require('meilisearch')
 
const main = async () => {
    const client = new MeiliSearch({
        host: 'http://127.0.0.1:7700'
    })
 
    const index = client.getIndex('prizes')
    const search = await index.search('chemisytr')
    console.log(search)
}
 
main()

این لیست عظیمی از نتایج را برمی گرداند. بیایید یاد بگیریم که چگونه می توانید فیلترها را اضافه کنید ، به عنوان مثال ، تعداد نتایج را محدود کنید. برای افزودن جسمی که فیلترها را قبول می کند ، خط زیر را تغییر دهید.

 const search = await index.search('chemisytr', { limit: 1})

این نتیجه زیر را برمی گرداند.

{ 
  hits: [ 
     { 
       id: '991',
       year: '2020',
       category: 'chemistry',
       firstname: 'Emmanuelle',
       surname: 'Charpentier',
       motivation: '"for the development of a method for genome editing"',
       share: '2' 
     } 
  ],
  offset: 0,
  limit: 1,
  nbHits: 111,
  exhaustiveNbHits: false,
  processingTimeMs: 1,
  query: 'chemisytr' 
}

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

مرحله 4: تنظیمات فهرست را تغییر دهید تا کلمات متوقف را حذف کنید

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

http://localhost:7700/indexes/prizes/settings

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

stopWords

آرایه.

{
  rankingRules: [
    "typo",
    "words",
    "proximity",
    "attribute",
    "wordsPosition",
    "exactness"
  ],
  distinctAttribute: null,
  searchableAttributes: ["*"],
  displayedAttributes: ["*"],
  stopWords: [ ],
  synonyms: { },
  attributesForFaceting: [ ]
}

ما با استفاده از کد JavaScript می توانیم به همان نتیجه برسیم.

 const index = client.getIndex('prizes')
 const settings = await index.getSettings()
 console.log(settings)

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

به عنوان مثال ، هیچ محصولی وجود ندارد که فراخوانی شود

a

یا

the

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

a

بخش و به دنبال کلمه

mask

.

در این مثال ، ما می خواهیم کلمات توقف زیر را حذف کنیم:

ابتدا بیایید بررسی کنیم که هنگام پرس و جو برای کلمه ، چه تعداد نتیجه دریافت می کنیم

the

.

 const index = client.getIndex('prizes')
 const results = await index.search('the')
 console.log(results.nbHits)

پرسش فوق برای

the

494 بازدید برمی گرداند. حالا ، بیایید ما را اصلاح کنیم

index.js

اسکریپت برای حذف کلمات توقف بالا.

 const index = client.getIndex('prizes')
 const response = await index.updateSettings({
   stopWords: ['a', 'an', 'the']
 })
 console.log(response)

برای بررسی تأثیر تغییر تنظیمات ، بیایید دوباره کلمه را جستجو کنیم

the

. اکنون ، این پرسش باید برگردد

0

نتایج. باحاله درسته؟

اشاره کوتاه: شاید شما یک کلمه توقف خاص مانند را فراموش کرده باشید

and

. اگر جدید ارسال کنید

updateSettings

از API خود درخواست کنید ، این پیکربندی قدیمی را بازنویسی می کند. بنابراین ، اطمینان حاصل کنید که هر بار که می خواهید تغییراتی ایجاد کنید ، لیست کامل کلمات متوقف را ارسال کنید.

!

مرحله 5: فیلترهای وجهی را تعریف کنید

جستجوی چهره ای ویژگی ارائه شده خارج از جعبه توسط MeiliSearch است. Faceting اجازه می دهد تا نتایج جستجو را در دسته هایی طبقه بندی کنیم که به آنها وجه گفته می شود. این به موتور MeiliSearch اجازه می دهد تا با استفاده از فیلترهای وجه سریعتر داده ها را جستجو کند.

فیلترهای Facet برای اعداد یا مقادیر بیشترین کاربرد را دارند. به عنوان مثال ، جوایز نوبل برای یک لیست ثابت از دسته ها اهدا می شود. این یک فیلتر وجه عالی است. همین امر در مورد مالکیت سال صدق می کند.

توجه داشته باشید: شما فقط می توانید از فیلترهای وجهی برای رشته ها یا آرایه های رشته ها استفاده کنید. در مثال ما ،

year

خاصیت به عنوان رشته ای ذخیره می شود که به ما امکان می دهد توسط

year

ویژگی.

در زیر مثالی را مشاهده می کنید که فیلترهای مختلف را برای خصوصیات اضافه می کند

year

و

category

. شما همیشه می توانید با مراجعه به تنظیمات مربوط به فهرست خود ، بررسی کنید که کدام فیلترها اضافه شده اند.

 const index = client.getIndex('prizes')
  const response = await index.updateSettings({
    attributesForFaceting: ['category', 'year']
  })

مرحله 5.1: آزمایش با فیلترهای وجهی

اکنون ، من می خواهم از همه برندگان جایزه نوبل با نام Paul پرس و جو کنم. این 14 نتیجه را برمی گرداند.

 const index = client.getIndex('prizes')
 
 const search1 = await index.search('paul')
 console.log(`Search 1 hits: ${search1.nbHits}`) // 14

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

chemistry: category:Chemistry

.

 const index = client.getIndex('prizes')
 
 const search2 = await index.search('paul', { facetFilters: [ 'category:Chemistry' ]})
 console.log(`Search 2 hits: ${search2.nbHits}`) // 5

این پرسش پنج نتیجه را برمی گرداند.

در آخر ، می خواهم چند فیلتر اضافی برای فیلتر کردن براساس هر گروه و سال اضافه کنم. من می خواهم برندگان جایزه نوبل را برای سال 1995 ، 1996 یا 1997 بازگردانم. خوشبختانه ، MeiliSearch امکان ترکیب چندین فیلتر وجه را فراهم می کند. اگر می خواهید مقادیر مختلفی را برای یک فیلتر وجه یکسان اضافه کنید ، باید از آرایه دیگری در داخل آرایه فیلترهای وجه استفاده کنید. به پرسش مثال زیر نگاه کنید.

 const index = client.getIndex('prizes')
 
 const search3 = await index.search('paul', { facetFilters: [ 'category:Chemistry', ['year:1995', 'year:1996', 'year:1997'] ]})
 console.log(`Search 3 hits: ${search3.nbHits}`) // 2

در نهایت ، این تنها دو نتیجه مطابق با نیازهای ما را برمی گرداند.

{ 
  hits:[ 
    { 
       id: '287',
       year: '1997',
       category: 'chemistry',
       firstname: 'Paul D.',
       surname: 'Boyer',
       motivation:
        '"for their elucidation of the enzymatic mechanism underlying the synthesis of adenosine triphosphate (ATP)"',
       share: '4' 
     },{ 
       id: '281',
       year: '1995',
       category: 'chemistry',
       firstname: 'Paul J.',
       surname: 'Crutzen',
       motivation: '"for their work in atmospheric chemistry, particularly concerning the formation and decomposition of ozone"',
       share: '3' 
     }
  ],
  offset: 0,
  limit: 20,
  nbHits: 2,
  exhaustiveNbHits: false,
  processingTimeMs: 0,
  query: 'paul' 
}

خوب! در آخر ، بیایید با قوانین رتبه بندی برای موتور MeiliSearch خود بازی کنیم.

مرحله 6: با قوانین رتبه بندی MeiliSearch بازی کنید

در مرحله 3 ، ما به شما نشان داده ایم که MeiliSearch چگونه با غلبه بر اشتباه تایپی را اداره می کند

chemisytr

بجای

chemistry

.

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

ما می توانیم ترتیب این قوانین رتبه بندی را بر اساس مورد استفاده شما تغییر دهیم تا سرعت نمونه MeiliSearch شما را دقیق تنظیم کنیم.

حتی می توان برخی از قوانین رتبه بندی را حذف کرد.

{
  rankingRules: [
    "typo",
    "words",
    "proximity",
    "attribute",
    "wordsPosition",
    "exactness"
  ],
  distinctAttribute: null,
  searchableAttributes: ["*"],
  displayedAttributes: ["*"],
  stopWords: ["a", "an", "the"],
  synonyms: { },
  attributesForFaceting: [
    "year",
    "category"
  ]
}

بیایید پرس و جو کنیم

Paul

مجدداً با قوانین رتبه بندی استاندارد فوق الذکر ما بیشتر به نتایج 10 تا 14 در لیست برگشتی علاقه مند هستیم. برای دریافت این لیست ، ما از

slice

روش برای آرایه ها.

    const index = client.getIndex('prizes')
    const search = await index.search('Paul')
    console.log(search.hits.slice(10, 14))

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

737

و

637

ابتدا ذکر شده است.

[ 
  { 
    id: '737',
    year: '2001',
    category: 'medicine',
    firstname: 'Sir Paul',
    surname: 'Nurse',
    motivation: '"for their discoveries of key regulators of the cell cycle"',
    share: '3' 
  },
  { 
    id: '637',
    year: '1964',
    category: 'literature',
    firstname: 'Jean-Paul',
    surname: 'Sartre',
    motivation:
     '"for his work which, rich in ideas and filled with the spirit of freedom and the quest for truth, has exerted a far-reaching influence on our age"',
    share: '1'
  },
  { 
    id: '217',
    year: '1954',
    category: 'chemistry',
    firstname: 'Linus',
    surname: 'Pauling',
    motivation: '"for his research into the nature of the chemical bond and its application to the elucidation of the structure of complex substances"',
    share: '1' 
  },
  { id: '50',
    year: '1945',
    category: 'physics',
    firstname: 'Wolfgang',
    surname: 'Pauli',
    motivation: '"for the discovery of the Exclusion Principle, also called the Pauli Principle"',
    share: '1'
  }
]

حال ، اجازه دهید قوانین رتبه بندی را در جایی که ترجیح می دهیم تغییر دهیم

wordsPosition

قاعده مهمترین قانون باشد. از طریق مستندات ، می توانیم اطلاعات زیر را در مورد کلمات قانون تنظیم پیدا کنیم.

“نتایج بر اساس موقعیت کلمات جستجوگر در صفات مرتب می شوند: ابتدا اسنادی را که حاوی اصطلاحات پرس و جو هستند در ویژگی های آنها پیدا کنید.”

برای مثال ما می خواهیم نام هایی را که با کلمه شروع می شوند اولویت بندی کنیم

Paul

بیش از اسامی مرکب مانند

Sir Paul

یا

Jean-Paul

. بیایید ابتدا ترتیب را با استفاده از مثال کد خود تغییر دهیم.

const index = client.getIndex('prizes')
await index.updateSettings({
        rankingRules:
            [
                "wordsPosition",
                "typo", 
                "words", 
                "proximity", 
                "attribute",
                "exactness"
            ]
    })

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

Sir Paul

و

Jean-Paul

تغییر کرده.

[ { id: '217',
    year: '1954',
    category: 'chemistry',
    firstname: 'Linus',
    surname: 'Pauling',
    motivation:
     '"for his research into the nature of the chemical bond and its application to the elucidation of the structure of complex substances"',
    share: '1' },
  { id: '50',
    year: '1945',
    category: 'physics',
    firstname: 'Wolfgang',
    surname: 'Pauli',
    motivation:
     '"for the discovery of the Exclusion Principle, also called the Pauli Principle"',
    share: '1' },
  { id: '737',
    year: '2001',
    category: 'medicine',
    firstname: 'Sir Paul',
    surname: 'Nurse',
    motivation:
     '"for their discoveries of key regulators of the cell cycle"',
    share: '3' },
  { id: '637',
    year: '1964',
    category: 'literature',
    firstname: 'Jean-Paul',
    surname: 'Sartre',
    motivation:
     '"for his work which, rich in ideas and filled with the spirit of freedom and the quest for truth, has exerted a far-reaching influence on our age"',
    share: '1' } ]

برای مستندات MeiliSearch می توانید مثال های بیشتری برای هر قانون رتبه بندی پیدا کنید.

مرحله 6.1: قانون رتبه بندی خود را تعریف کنید

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

year

ویژگی. حال ، بیایید بد بو شویم و همه قوانین رتبه بندی را حذف کنیم و یک قانون رتبه بندی سفارشی برای آن اضافه کنیم

year

ویژگی.

می توانید یک قانون مرتب سازی صعودی یا نزولی تعریف کنید.

    const index = client.getIndex('prizes')
    await index.updateSettings({
        rankingRules:
            [
                "desc(year)"
            ]
    })

بعد ، بیایید جستجو کنیم

Paul

از نو. اکنون توجه کنید که نتایج بر اساس طبقه بندی شده اند

year

همانطور که انتظار می رفت

[ 
  { 
    id: '995',
    year: '2020',
    category: 'economics',
    firstname: 'Paul',
    surname: 'Milgrom',
    motivation: '"for improvements to auction theory and inventions of new auction formats"',
    share: '2'
   },
   { 
     id: '834',
     year: '2008',
     category: 'economics',
     firstname: 'Paul',
     surname: 'Krugman',
     motivation: '"for his analysis of trade patterns and location of economic activity"',
     share: '1'
   },
   { 
     id: '764',
     year: '2003',
     category: 'medicine',
     firstname: 'Paul C.',
     surname: 'Lauterbur',
     motivation: '"for their discoveries concerning magnetic resonance imaging"',
     share: '2'
   },
   …
]

خودشه!

نتیجه

این برای این آموزش MeiliSearch و JS است. این آموزش نحوه استفاده از MeiliSearch API ، ایجاد نمایه ها ، اصلاح تنظیمات فهرست و تعریف فیلترهای وجهه را برای جستجوی دقیق تر و سریعتر به شما آموزش داده است.

برای کسب اطلاعات بیشتر ، نگاهی به اسناد و مدار بسته و بسته بندی JS API در GitHub بیندازید.

با استفاده از MeiliSearch ، مطمئن شوید که با دادن یک ستاره به MeiliSearch در GitHub ، کمی عشق به ما نشان دهید!

قبلاً در https://blog.meilisearch.com/ نحوه-جستجوی-برندگان-جایزه-نوبل-سریعتر-با-مرورگرهای-تبلیغاتی-برای-جاوااسکریپت /

عکس پروفایل نویسنده

داستان های من را بخوانید

نویسنده فنی و بازاریابی | توسعه دهنده Blockchain و Backend

برچسب ها

با هکر نون همراه باشید

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