brief: | i18n.site na-akwado ọchụchọ ederede zuru oke nke enweghị ihe nkesa.

Edemede a na-ewebata mmejuputa teknụzụ ọchụchọ zuru oke n'ihu n'ihu, gụnyere ntụgharị ntụgharị nke IndexedDB wuru, ọchụchọ prefix, njikarịcha nkebi okwu na nkwado asụsụ ọtụtụ.

E jiri ya tụnyere azịza ndị dị adị, i18n.site dị ọcha n'ihu njedebe ederede zuru oke pere mpe na ngwa ngwa, dabara maka weebụsaịtị pere mpe na ọkara dị ka akwụkwọ na blọọgụ, ọ dịkwa na ntanetị.


Ọchụchọ Ederede Zuru Oke Tụgharịa N'ihu

Usoro

Ka ọtụtụ izu nke mmepe gachara i18n.site (ngwa ọrụ ụlọ weebụsaịtị & markdown multilingualtranslation) na-akwado ọchụchọ ederede zuru oke n'ihu.

Edemede a ga-ekekọrịta mmejuputa teknuzu nke i18n.site dị ọcha n'ihu-ngwụcha ederede i18n.site na-enweta nsonaazụ ọchụchọ.

Koodu : emepe kernel / interface mmekọrịta

Nyochaa Ngwọta Ọchụchọ Ederede Zuru Oke Na-Enweghị Ihe Nkesa

Maka webụsaịtị pere mpe na nke ọkara kwụ ọtọ dị ka akwụkwọ/blọọgụ nkeonwe, iwulite ihe nchọta ederede zuru oke nke onwe ya dị oke arọ, na nchọ ederede zuru oke na-enweghị ọrụ bụ nhọrọ a na-ahụkarị.

Ngwọta ọchụchọ ederede zuru oke na-enweghị nkesa ga-adaba na ngalaba abụọ sara mbara:

Nke algolia.com , ndị na-eweta ọrụ ọchụchọ ndị yiri ya na-enye ihe ndị dị n'ihu maka ọchụchọ ederede zuru oke.

Ọrụ ndị dị otú ahụ chọrọ ugwo dabere na olu ọchụchọ, ma ọ naghị adị ndị ọrụ na ala China n'ihi okwu dị ka nnabata webụsaịtị.

Enweghị ike iji ya na-anọghị n'ịntanetị, enweghị ike iji ya na intranet, ma nwee oke oke. Isiokwu a adịghị atụle nke ukwuu.

Nke abụọ bụ nchọcha ederede zuru oke n'ihu.

Ugbu a, nchọcha ederede zuru oke n'ihu na-agụnye lunrjs na ElasticLunr.js (dabere na mmepe nke lunrjs ).

lunrjs Enwere ụzọ abụọ iji wuo ndeksi, ma ha abụọ nwere nsogbu nke ha.

  1. Faịlụ ndeksi ewuruburu

    N'ihi na ndeksi nwere okwu sitere na akwụkwọ niile, ọ buru ibu na nha. Mgbe ọ bụla agbakwunyere ma ọ bụ gbanwee akwụkwọ, a ga-ebunye faịlụ ndeksi ọhụrụ. Ọ ga-abawanye oge nchere onye ọrụ ma na-eri ọtụtụ bandwidth.

  2. Budata akwụkwọ ma wuo ndeksi na ofufe

    Ịmepụta ndeksi bụ ọrụ siri ike na-arụkọ ọrụ ọnụ mgbe ọ bụla ị nwetara ya ga-eme ka ọ bụrụ ihe na-adịghị mma na ahụmahụ onye ọrụ.


Na mgbakwunye na lunrjs , enwere ụfọdụ ngwọta ọchụchọ ederede zuru oke, dị ka :

fusejs , gbakọọ myirịta n'etiti eriri iji chọọ.

Arụmọrụ nke ngwọta a dị oke njọ na enweghị ike iji ya maka nyocha ederede zuru oke (lee Fuse.js Ajụjụ ogologo na-ewe ihe karịrị 10 sekọnd, otu esi ebuli ya? ).

TinySearch , jiri Bloom filter iji chọọ, enweghị ike iji ya mee ihe maka prefix (dịka ọmụmaatụ, tinye goo , ọchụchọ good , google ), na enweghị ike nweta nsonaazụ mmecha akpaka yiri ya.

N'ihi adịghị ike nke ihe ngwọta ndị dị ugbu a, i18n.site mepụtara ihe ọhụrụ dị ọcha n'ihu-ngwụcha ihe nchọta ederede zuru oke, nke nwere àgwà ndị a :

  1. Na-akwado nchọta asụsụ dị iche iche ma pere mpe n'ogo nke kernel ọchụchọ mgbe nkwakọchara gzip bụ 6.9KB (maka ntụnyere, nha nke lunrjs bụ 25KB ).
  2. Mepụta ndepụta ntụgharị ntụgharị dabere na indexedb , nke na-ewe obere ebe nchekwa na ngwa ngwa.
  3. Mgbe agbakwunyere / gbanwee akwụkwọ, ọ bụ naanị akwụkwọ agbakwunyere ma ọ bụ gbanwetụrụ ka a na-edegharịgharị ọzọ, na-ebelata ọnụ ọgụgụ nke mgbako.
  4. Na-akwado ọchụchọ prefix ma nwee ike igosipụta nsonaazụ ọchụchọ ozugbo mgbe onye ọrụ na-ede.
  5. Dị na-anọghị n'ịntanetị

N'okpuru ebe a, a ga-ewebata nkọwa mmejuputa teknụzụ i18n.site n'ụzọ zuru ezu.

Nkewa Okwu Ọtụtụ Asụsụ

Nkewa okwu na-eji nkebi okwu Intl.Segmenter nke ihe nchọgharị ihe nchọgharị, yana ihe nchọgharị niile bụ isi na-akwado interface a.

Koodu nkebi coffeescript bụ nke a

SEG = new Intl.Segmenter 0, granularity: "word"

seg = (txt) =>
  r = []
  for {segment} from SEG.segment(txt)
    for i from segment.split('.')
      i = i.trim()
      if i and !'| `'.includes(i) and !/\p{P}/u.test(i)
        r.push i
  r

export default seg

export segqy = (q) =>
  seg q.toLocaleLowerCase()

na: