brief: | i18n.site އިން މިހާރު ސަރވަރލެސް ފުލް ޓެކްސްޓް ސަރޗަށް ސަޕޯޓް ކުރެއެވެ.
މި ލިޔުމުގައި ތަޢާރަފްކޮށްފައިވަނީ އިންޑެކްސްޑްޑީބީ އިން ބިލްޑް އިންވާރޓްޑް އިންޑެކްސް، ޕްރިފިކްސް ސަރޗް، ވޯޑް ސެގްމެންޓޭޝަން އޮޕްޓިމައިޒޭޝަން އަދި މަލްޓި ލެންގުއޭޖް ސަޕޯޓް ހިމެނޭ ގޮތަށް ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗް ޓެކްނޮލޮޖީ ތަންފީޒުކުރުމެވެ.
މިހާރު ހުރި ހައްލުތަކާ އަޅާބަލާއިރު، i18n.siteގެ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗަކީ ސައިޒުން ކުޑަ އަދި އަވަސް، ޑޮކިއުމަންޓްތަކާއި ބްލޮގް ފަދަ ކުދި އަދި މެދު ސައިޒުގެ ވެބްސައިޓްތަކަށް އެކަށީގެންވާ އަދި އޮފްލައިންކޮށް ލިބެން ހުންނަ ސަރޗެކެވެ.
އެތައް ހަފްތާއެއް ވަންދެން ތަރައްޤީ ކުރުމަށްފަހު، i18n.site (ޚުދުމުޚުތާރު ސްޓޭޓިކް markdown މަލްޓިލިންގުއަލްޓްރާންސްލޭޝަން & ވެބްސައިޓް ބިލްޑިންގ ޓޫލް) މިހާރު ސަޕޯޓް ކުރަނީ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗަކަށެވެ.
މި ލިޔުމުގައި i18n.site
ޕިއުރ ފްރަންޓް-އެންޑް ފުލް-ޓެކްސްޓް ސަރޗް ގެ ޓެކްނިކަލް އިމްޕްލިމެންޓޭޝަން ހިއްސާ ކުރާނީ ސަރޗް އިފެކްޓް ތަޖުރިބާ ކުރުމަށް i18n.site
ޑޮކިއުމަންޓް/ޕާސަނަލް ބްލޮގް ފަދަ ކުދި އަދި މެދު ސައިޒުގެ ޚުދު ސްޓޭޓިކް ވެބްސައިޓްތަކަށް، އަމިއްލައަށް ބިނާކޮށްފައިވާ ފުލް ޓެކްސްޓް ސަރޗް ބެކްއެންޑެއް ބިނާކުރުމަކީ މާ ބުރަ ކަމެއް ކަމަށާއި، ސާވިސް ފްރީ ފުލް ޓެކްސްޓް ސަރޗަކީ މާ އާންމު ގޮތެކެވެ.
ސަރވަރ ނެތް ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަންތައް ފުޅާ ދެ ކެޓަގަރީއަކަށް ބަހާލެވިފައިވެއެވެ.
ފުރަތަމަ ކަމަކަށް، މިފަދަ algolia.com ތިންވަނަ ފަރާތެއްގެ ސަރޗް ސާވިސް ޕްރޮވައިޑަރުން ފުލް ޓެކްސްޓް ސަރޗަށް ފްރަންޓް އެންޑް ކޮމްޕޯނެންޓްތައް ފޯރުކޮށްދެއެވެ.
މިފަދަ ހިދުމަތްތައް ސަރޗް ވޮލިއުމްއަށް ބަލައިގެން ފައިސާ ދައްކަން ޖެހޭއިރު، ގިނަ ފަހަރަށް ޗައިނާގެ ބިންގަނޑުގައި ތިބި ޔޫޒަރުންނަށް ވެބްސައިޓް ކޮމްޕްލައިންސް ފަދަ މައްސަލަތަކުގެ ސަބަބުން ނުލިބެ އެވެ.
އެއީ އޮފްލައިންކޮށް ބޭނުން ނުކުރެވޭނެ، އިންޓްރާނެޓްގައި ބޭނުން ނުކުރެވޭނެ، އަދި ބޮޑެތި ލިމިޓެޝަންތަކެއް ހުރި އެއްޗެކެވެ. މި ލިޔުމުގައި މާބޮޑު ވާހަކައެއް ނުދައްކައެވެ.
ދެވަނަ ކަމަކީ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗެވެ.
މިވަގުތު އާންމު ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗްތަކުގެ ތެރޭގައި lunrjs އަދި ElasticLunr.js ( lunrjs
ސެކަންޑަރީ ޑިވެލޮޕްމަންޓަށް ބިނާކޮށް) ހިމެނެއެވެ.
lunrjs
އިންޑެކްސް ބިނާކުރުމަށް ދެގޮތެއް އޮންނައިރު، މިދެގޮތުގައިވެސް އަމިއްލަ މައްސަލަތަކެއް ހުރެއެވެ.
ކުރިން ބިލްޑްކޮށްފައިވާ އިންޑެކްސް ފައިލްތަކެވެ
ސަބަބަކީ އިންޑެކްސްގައި ހުރިހާ ލިޔެކިޔުންތަކެއްގެ ލަފުޒުތައް ހިމެނޭތީ، އެއީ ސައިޒުން ބޮޑު އެއްޗެކެވެ. ކޮންމެ ލިޔުމެއް އިތުރުކުރާ ނުވަތަ ބަދަލުކުރާ ކޮންމެ ފަހަރަކު އާ އިންޑެކްސް ފައިލެއް ލޯޑްކުރަން ޖެހެއެވެ. އެއީ ޔޫޒަރުގެ ވެއިޓިން ޓައިމް އިތުރުވެ، ގިނަ ބެންޑްވިޑް ކޮންސިއުމް ކުރާނެ ކަމެކެވެ.
ޑޮކިއުމަންޓްތައް ލޯޑްކޮށް ފްލައިގައި އިންޑެކްސްތައް ބިލްޑްކުރުން
އިންޑެކްސް އެއް ހެދުމަކީ ކޮމްޕިއުޓޭޝަނަލް ގޮތުން އިންޓެންސިވް މަސައްކަތެކެވެ.
lunrjs
ގެ އިތުރުން ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަންތަކެއް ވެސް ހުރެއެވެ، އޭގެ ތެރޭގައި :
fusejs , ހޯދަން ބޭނުންވާ ސްޓްރިންގްތަކުގެ މެދުގައިވާ އެއްގޮތްކަން ހިސާބުކުރުން.
މި ސޮލިއުޝަންގެ ޕާފޯމަންސް އިންތިހާއަށް ދަށްވެ، ފުލް ޓެކްސްޓް ސަރޗަށް ބޭނުން ނުކުރެވޭނެ (ބަލާށެވެ Fuse.js ދިގު ސުވާލަކަށް 10 ސިކުންތަށްވުރެ ގިނަ ވަގުތު ނަގާ، އެކަން އޮޕްޓިމައިޒް ކުރާނީ ކިހިނެއް؟ ).
TinySearch goo
good
google
މިހާރު ހުރި ހައްލުތަކުގެ އުނިކަންތަކުގެ ސަބަބުން، i18n.site
އާ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗް ސޮލިއުޝަނެއް ތަރައްޤީކުރިއިރު، މިއީ ތިރީގައިވާ ސިފަތައް ހުންނަ ސޮލިއުޝަނެއް :
6.9KB
gzip
އަޅާކިޔުމަށްޓަކައި lunrjs
ގެ ސައިޒަކީ 25KB
) އެވެ.indexedb
އަށް ބިނާކޮށް އިންވާޓްޑް އިންޑެކްސް އެއް ބިލްޑް ކުރާއިރު، މިއީ މަދު މެމޮރީ ނަގާ އަދި އަވަސް އިންޑެކްސްއެކެވެ.ތިރީގައި މިވަނީ i18n.site
ފަންނީ ތަންފީޒުކުރުމުގެ ތަފްސީލު ތަފްސީލުކޮށް ތަޢާރަފްކުރެވިފައެވެ.
ވޯޑް ސެގްމެންޓޭޝަންގައި ބޭނުންކުރަނީ ބްރައުޒާގެ ނެޓިވް ވޯޑް ސެގްމެންޓޭޝަން Intl.Segmenter
ކަމަށާއި، ހުރިހާ މެއިންސްޓްރީމް ބްރައުޒާތަކުންވެސް މި އިންޓަރފޭސްއަށް ސަޕޯޓްކުރެއެވެ.
ލަފުޒު ސެގްމެންޓޭޝަން coffeescript
ކޯޑް ތިރީގައި މިވަނީއެވެ
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()
އެތެރެ:
/\p{P}/
އަކީ ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _
މާކްސް { ގުޅޭ ރެގިއުލާ އެކްސްޕްރެޝަނެކެވެ. | } ~. .</p><ul style=";text-align:right;direction:rtl"><li style=";text-align:right;direction:rtl">
split('.')އަކީ
Firefoxބްރައުޒާ ވޯޑް ސެގްމެންޓޭޝަން އިން
. ` ސެގްމެންޓް ނުކުރާތީ އެވެ .
IndexedDB
ގައި 5 އޮބްޖެކްޓް ސްޓޯރޭޖް ޓޭބަލް އުފެއްދިއެވެ :
word
ބަސް : id -doc
: id - ޑޮކިއުމަންޓް url - ޑޮކިއުމަންޓް ވަރޝަން ނަންބަރުdocWord
: ޑޮކިއުމަންޓްގެ އެރޭ id - word idprefix
: ޕްރިފިކްސް - ލަފުޒު id ގެ އެރޭrindex
: ވޯޑް id - ޑޮކިއުމަންޓް id : ލައިން ނަންބަރުތަކުގެ އެރޭޑޮކިއުމަންޓް url
އަދި ވަރޝަން ނަންބަރު ver
ގެ އެރޭ އިން ޕާސްކޮށް، ތާވަލް doc
ގައި ޑޮކިއުމަންޓް ހުރިތޯ ހޯދާށެވެ. ހަމައެއާއެކު، ޕާސް ނުކުރެވި ހުރި ލިޔެކިޔުންތަކުގެ އިންވާޓް އިންޑެކްސް ނައްތާލާށެވެ.
މިގޮތަށް އިންކްރިމެންޓަލް އިންޑެކްސިންގ ހާސިލްކޮށް، ހިސާބުކުރުމުގެ މިންވަރު މަދުކުރެވިދާނެއެވެ.
ފްރަންޓް އެންޑް އިންޓަރެކްޝަންގައި ، ފުރަތަމަ ފަހަރަށް ލޯޑް ކުރާއިރު ލެގް progress + css އިންޑެކްސްގެ ލޯޑިންގ ޕްރޮގްރެސް ބާރ / .
މި މަޝްރޫޢު idb އެސިންކްރޮނަސް އެންކެޕްސުލޭޝަންގެ މައްޗަށް ބިނާކޮށް IndexedDB
އިންޑެކްސްޑްޑީބީ ރީޑްސް އަދި ރައިޓްސް އަކީ އެސިންކްރޮނަސް އެއްޗެކެވެ. އިންޑެކްސް އުފައްދާއިރު، އިންޑެކްސް އުފެއްދުމަށްޓަކައި ޑޮކިއުމަންޓްތައް އެއްފަހަރާ ލޯޑް ކުރެވޭނެއެވެ.
ވާދަވެރި ލިޔުމުގެ ސަބަބުން ޕާޝިއަލް ޑޭޓާ ގެއްލުމުން ސަލާމަތްވުމަށްޓަކައި ތިރީގައިވާ coffeescript
ކޯޑަށް ރިފަރކޮށް، ވާދަވެރި ލިޔުންތައް އިންޓަސެޕްޓް ކުރުމަށްޓަކައި ކިޔެވުމާއި ލިޔުމާއި ދެމެދު ing
ކެޝް އެއް އިތުރުކުރެވިދާނެއެވެ.
pusher = =>
ing = new Map()
(table, id, val)=>
id_set = ing.get(id)
if id_set
id_set.add val
return
id_set = new Set([val])
ing.set id, id_set
pre = await table.get(id)
li = pre?.li or []
loop
to_add = [...id_set]
li.push(...to_add)
await table.put({id,li})
for i from to_add
id_set.delete i
if not id_set.size
ing.delete id
break
return
rindexPush = pusher()
prefixPush = pusher()
މި ސަރޗްގައި ފުރަތަމަ ސެގްމެންޓް ކުރާނީ ޔޫޒަރ އެންޓަރ ކުރާ ކީވޯޑްސް އެވެ.
ލަފުޒު ސެގްމެންޓޭޝަންގެ ފަހުން N
ލަފުޒު ހުރިކަމަށް ގަބޫލުކުރާއިރު 1
އަނބުރާ ލިބޭއިރު، N-2
N-1
ކީވޯޑް ހިމެނޭ ނަތީޖާތައް އަނބުރާ ލިބޭނެއެވެ.
ފުރަތަމަ ދައްކާ ސަރޗް ނަތީޖާތަކުން ސުވާލުގެ ޞައްޙަކަން ކަށަވަރުވެ، އޭގެ ފަހުން ލޯޑް ކުރެވޭ ނަތީޖާތަކުން (ލޯޑް މޯރ ބަޓަންއަށް ފިތާލުމުން) ރިކޯލް ރޭޓް ކަށަވަރުވެއެވެ.
ރެސްޕޮންސް ސްޕީޑް ރަނގަޅު ކުރުމަށްޓަކައި، ސަރޗް އިން އޮން-ޑިމާންޑް ލޯޑިންގ ތަންފީޒު ކުރުމަށް yield
ޖަނަރޭޓަރ ބޭނުންކޮށް، ނަތީޖާއެއް ސުވާލު ކުރާ limit
ފަހަރަކު ރިޓަރން ކުރެއެވެ.
yield
ފަހުން އަލުން ހޯދާ ކޮންމެ ފަހަރަކު IndexedDB
ގެ ކިއުއަރީ ޓްރާންސެކްޝަނެއް އަލުން ހުޅުވަން ޖެހޭކަން ފާހަގަކޮށްލެވެއެވެ .
ޔޫޒަރ ޓައިޕް ކުރަމުން ދަނިކޮށް ސަރޗް ނަތީޖާ ދެއްކުމަށްޓަކައި، މިސާލަކަށް wor
ޖަހާއިރު، words
އަދި work
ފަދަ wor
ގެ ކުރިން 3 ޖަހާފައިވާ ލަފުޒުތައް ފެންނާނެއެވެ.
ސަރޗް ކާރނަލް އިން ލަފުޒު ސެގްމެންޓޭޝަނަށްފަހު އެންމެ ފަހު ލަފުޒަށް prefix
ޓޭބަލް ބޭނުންކޮށްގެން އޭގެ ކުރިން ޖަހާފައިވާ ހުރިހާ ލަފުޒުތައް ހޯދައި، ތަރުތީބުން ހޯދާނެއެވެ.
އެންޓި ޝޭކް ފަންކްޝަން debounce
އަކީ ވެސް ފްރަންޓް އެންޑް އިންޓަރެކްޝަންގައި (ތިރީގައިވާ ގޮތަށް ތަންފީޒު ކުރެވޭ) ބޭނުންކޮށްގެން ޔޫޒަރ އިންޕުޓް ޓްރިގަރ ކުރާ ސަރޗްތަކުގެ ފްރީކުއެންސީ މަދުކޮށް، ހިސާބުކުރުމުގެ މިންވަރު މަދުކުރުމަށެވެ.
export default (wait, func) => {
var timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(func.bind(this, ...args), wait);
};
}
އިންޑެކްސް ޓޭބަލްގައި އަސްލު ލިޔުން ރައްކާކޮށްފައި ނުވާއިރު، ހަމައެކަނި ލަފުޒުތައް ރައްކާކޮށްފައި ހުރުމުން ރައްކާކުރާ މިންވަރު މަދުވެއެވެ.
ސަރޗް ނަތީޖާތައް ހައިލައިޓް ކުރުމަށް އަސްލު ޓެކްސްޓް އަލުން ލޯޑް ކުރަން ޖެހޭއިރު، service worker
އެއްގޮތް ކުރުމުން ތަކުރާރުކޮށް ނެޓްވޯކް ރިކުއެސްޓް ކުރުމުން ސަލާމަތްވެވޭނެއެވެ.
ހަމައެއާއެކު، service worker
ހުރިހާ ލިޔުންތަކެއް ކެޝް ކުރާތީ، ޔޫޒަރ ސަރޗެއް ކުރުމުން، ސަރޗް ހިމެނޭ ގޮތަށް މުޅި ވެބްސައިޓް އޮފްލައިންކޮށް ލިބެން ހުރެއެވެ.
i18n.site
ގެ ޕިއުރ ފްރަންޓް އެންޑް ސަރޗް ސޮލިއުޝަން MarkDown
ޑޮކިއުމަންޓަކަށް އޮޕްޓިމައިޒް ކުރެވިފައިވެއެވެ.
ސަރޗް ނަތީޖާ ދައްކާއިރު ޗެޕްޓަރުގެ ނަން ފެންނާނެ ކަމަށާއި ކްލިކް ކުރުމުން ޗެޕްޓަރ ނެވިގޭޓް ވާނެ ކަމަށް ވެސް ވިދާޅުވިއެވެ.
އިންވާޓްޑް ފުލް ޓެކްސްޓް ސަރޗް ތަންފީޒުކޮށްފައިވަނީ ޚުދު ފްރަންޓް އެންޑްގައި، އެއްވެސް ސަރވަރެއް ބޭނުން ނުވާނެއެވެ. ލިޔެކިޔުންތަކާއި އަމިއްލަ ބްލޮގް ފަދަ ކުދި އަދި މެދުފަންތީގެ ވެބްސައިޓްތަކަށް ވަރަށް އެކަށީގެންވެއެވެ.
i18n.site
އޯޕަން ސޯސް އަމިއްލައަށް ތަރައްޤީކޮށްފައިވާ ޕިއުރ ފްރަންޓް އެންޑް ސަރޗް، ސައިޒުން ކުޑަ އަދި އަވަސް ރެސްޕޮންސް، މިހާރު ބޭނުންކުރާ ޕިއުރ ފްރަންޓް އެންޑް ފުލް ޓެކްސްޓް ސަރޗްގެ އުނިކަންތައްތައް ހައްލުކޮށް، ޔޫޒަރ އެކްސްޕީރިއަންސް ރަނގަޅުކޮށްދެއެވެ.