brief: | i18n.site ሕጂ ሰርቨር ዘይብሉ ምሉእ ጽሑፍ ምድላይ ይድግፍ።
እዚ ጽሑፍ እዚ፡ ብኢንዴክስድዲቢ ዝተሃንጸ ዝተገልበጠ ኢንዴክስ፡ ምድላይ ቅድመ-ጥብቆ፡ ምምሕያሽ ምክፍፋል ቃላትን ደገፍ ብዙሕ ቋንቋታትን ሓዊሱ፡ ኣተገባብራ ጽሩይ ቅድመ-መወዳእታ ምሉእ-ጽሑፍ ምድላይ ቴክኖሎጂ የላልየና።
ምስቶም ዘለዉ መፍትሒታት ክነጻጸር እንከሎ፡ i18n.site ጽሩይ ናይ ቅድሚት ምሉእ ጽሑፍ ምድላይ ብዓቐንን ቅልጡፍን፡ ንኣናእሽቱን ማእከሎትን መርበባት ሓበሬታ ከም ሰነዳትን ብሎግን ዝምችእ ኮይኑ፡ ካብ መስመር ወጻኢ ድማ ይርከብ።
ድሕሪ ናይ ሓያሎ ሰሙናት ምዕባለ i18n.site (ጽሩይ ስቴቲክ markdown multilingualtranslation & ዌብሳይት ህንጸት መሳርሒ) ሕጂ ንጽሩይ ናይ ቅድሚት ምሉእ ጽሑፍ ምድላይ ይድግፍ።
እዚ ጽሑፍ ቴክኒካዊ ኣተገባብራ i18n.site
ጽሩይ ቅድመ-መወዳእታ ምሉእ-ጽሑፍ ምድላይ Visit i18n.site
ንኣናእሽቱን ማእከሎትን ጽሩይ ስታትቲክ መርበባት ሓበሬታ ከም ሰነዳት/ውልቃዊ ብሎግ፡ ባዕልኻ ዝሃነጾ ምሉእ ጽሑፍ ምድላይ ድሕረ ባይታ ምህናጽ ኣዝዩ ከቢድ እዩ፡ ካብ ኣገልግሎት ነጻ ዝኾነ ምሉእ ጽሑፍ ምድላይ ድማ እቲ ዝያዳ ልሙድ ምርጫ እዩ።
ሰርቨር ኣልቦ ምሉእ ጽሑፍ ምድላይ መፍትሒታት ኣብ ክልተ ሰፋሕቲ ምድባት ይምደቡ፤
ቀዳማይ፡ ተመሳሳሊ algolia.com ናይ ሳልሳይ ወገን ኣገልግሎት ምድላይ ንሙሉእ ጽሑፍ ምድላይ ዝኸውን ናይ ቅድሚት ኣካላት ይህቡ።
ከምዚኦም ዝበሉ ኣገልግሎታት ኣብ መጠን ምድላይ ዝተመርኮሰ ክፍሊት ዝሓትት ኮይኑ፡ መብዛሕትኡ ግዜ ድማ ብሰንኪ ከም ምኽባር መርበብ ሓበሬታ ዝኣመሰሉ ጉዳያት ኣብ መሬት ቻይና ንዝርከቡ ተጠቀምቲ ኣይርከቡን።
ካብ መስመር ወጻኢ ክጥቀመሉ ኣይክእልን፣ ኣብ ኢንትራኔት ክጥቀመሉ ኣይክእልን፣ ዓቢ ድሩትነት ኣለዎ። እዛ ዓንቀጽ እዚኣ ብዙሕ ኣይትዛረብን እያ።
እቲ ካልኣይ ድማ ጽሩይ ናይ ቅድሚት ምሉእ ጽሑፍ ምድላይ እዩ።
ኣብዚ እዋን እዚ፡ ልሙድ ጽሩይ ቅድመ-መወዳእታ ምሉእ-ጽሑፍ ምድላይ lunrjs ን ElasticLunr.js ን (ኣብ lunrjs
ካልኣዊ ምዕባለ ዝተመርኮሰ) የጠቓልል።
lunrjs
ኢንዴክስ ንምህናጽ ክልተ መንገድታት ኣለዉ፡ ክልቲኦም ድማ ናይ ገዛእ ርእሶም ጸገማት ኣለዎም።
ቅድሚ ሕጂ ዝተሃንጹ ኢንዴክስ ፋይላት
እቲ ኢንዴክስ ካብ ኩሉ ሰነዳት ዝተረኽበ ቃላት ስለ ዝሓዘ፡ ብዓቐን ዓቢ እዩ። ሓደ ሰነድ ኣብ ዝውሰኸሉ ወይ ክቕየር ከሎ፡ ሓድሽ ኢንዴክስ ፋይል ክጽዓን ኣለዎ። ተጠቃሚ ናይ ምጽባይ ግዜ ክውስኽን ብዙሕ ባንድዊድ ክወስድን እዩ።
ሰነዳት ጽዓንን ኣብ በረራ ኢንዴክስ ምህናጽን
ምህናጽ ኢንዴክስ ብስሌት ጽዑቕ ዕማም እዩ ነቲ ኢንዴክስ ኣብ ነፍሲ ወከፍ እትረኽቦ እዋን ዳግማይ ምህናጽ ርኡይ ምድንጓይን ድኹም ተመኩሮ ተጠቃሚን የስዕብ።
ብዘይካ lunrjs
፡ ገለ ካልኦት ምሉእ ጽሑፍ ዘለዎም መፍትሒታት ምድላይ ኣለዉ፡ ከም :
ኣፈጻጽማ ናይዚ መፍትሒ ኣዝዩ ድኹም ስለዝኾነ ንሙሉእ ጽሑፍ ምድላይ ክውዕል ኣይክእልን እዩ (ርአ Fuse.js ነዊሕ ሕቶ ልዕሊ 10 ካልኢት ይወስድ፣ ከመይ ጌርካ ትመሓየሽ? )።
TinySearch goo
good
google
ብሰንኪ ጉድለታት ናይቶም ዝነበሩ መፍትሒታት i18n.site
ሓድሽ ጽሩይ ቅድመ-መወዳእታ ምሉእ-ጽሑፍ ምድላይ መፍትሒ ኣማዕቢሉ፡ እዚ ድማ እዞም ዝስዕቡ ባህርያት ኣለዎ :
gzip
ናይ ምድላይ ከርነል 6.9KB
እዩ (ንመነጻጸሪ፡ ዓቐን 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><li>
split('.')ዝኾነሉ ምኽንያት ድማ
Firefoxምክፍፋል ቃላት መርበብ ሓበሬታ
. ` ስለዘይከፍሎ እዩ።
5 ናይ ነገራት መኽዘን ሰደቓታት ኣብ IndexedDB
ተፈጢሮም :
word
ቃላት : id -doc
: id - ሰነድ url - ቁጽሪ ስሪት ሰነድdocWord
: ስርርዕ ሰነድ id - ቃል idprefix
: ስርርዕ ቅድመ-ጥብቆ - ቃል idrindex
: ቃል id - ሰነድ id : ስርርዕ ቁጽሪ መስመርኣብቲ ስርርዕ ሰነድ url
ን ስሪት ቁጽሪ ver
ን ኣሕልፍ፣ እቲ ሰነድ ኣብ ሰሌዳ doc
እንተሃልዩ ድማ ድለዮ።እንተዘይሃልዩ ድማ ዝተገልበጠ ኢንዴክስ ፍጠር። ማዕረ ማዕሪኡ ድማ ነቶም ዘይተሓለፉ ሰነዳት ዝተገልበጠ ኢንዴክስ ኣውጽእዎ።
በዚ መንገዲ ድማ ወሰኽ ኢንዴክስ ክረጋገፅን መጠን ስሌት ይንኪን።
ኣብ ቅድሚት-መወዳእታ ምትእስሳር፡ ንመጀመርታ ግዜ ኣብ እትጽዕነሉ እዋን ምድንጓይ ንምክልኻል፡ እቲ ናይ ምጽዓን ምዕባለ ባር ክረአ ይኽእል እዩ፡ "Progress Bar with Animation, Based on a Single progress + Pure css Implementation" ትግርኛ / ቻይንኛ ርአ።
እቲ ፕሮጀክት idb asynchronous encapsulation ናይ IndexedDB
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
ቃላት ኣለዉ ንበል ውጽኢት ክንመልስ ከለና፡ መጀመርታ ኩሎም ቁልፊ ቃላት ዝሓዘ ውጽኢት ክምለስ እዩ፡ ድሕሪኡ N-1
, N-2
,..., 1
ቁልፊ ቃላት ዝሓዘ ውጽኢት ክምለስ እዩ።
እቲ ዝረአ ውጽኢት ምድላይ መጀመርታ ልክዕነት ናይቲ ሕቶ የረጋግጽ፣ ድሕሪኡ ዝጽዓን ውጽኢት ድማ (እቲ load more ዝብል ቁልፊ ጠውቕ) ነቲ ናይ ምዝካር ደረጃ የረጋግጽ።
ፍጥነት ምላሽ ንምምሕያሽ፡ እቲ ምድላይ ነቲ yield
ጀነሬተር ተጠቒሙ ኣብ ትሕቲ ጠለብ ምጽዓን የተግብር፡ ውጽኢት limit
ዝሕተተሉ እዋን ድማ ይምለስ።
ኣስተውዕል ኣብ ነፍሲ ወከፍ ድሕሪ yield
እንደገና ኣብ እትደልየሉ እዋን IndexedDB
ዝኾነ ናይ ሕቶ ትራንዛክሽን ዳግማይ ክትከፍቶ ኣለካ።
ተጠቃሚ ኣብ ዝጽሕፈሉ እዋን ውጽኢት ምድላይ ንምርኣይ ንኣብነት wor
ምስ ኣተወ፡ ከም words
ን work
ዝኣመሰሉ ብ wor
ዝተሰርሑ ቃላት ይረኣዩ።
እቲ ናይ ምድላይ ከርነል ነቲ ናይ መወዳእታ ቃል ድሕሪ ምክፍፋል ቃላት 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
's ጽሩይ ናይ ቅድሚት ምድላይ መፍትሒ ን MarkDown
ሰነዳት ዝተመቻቸወ እዩ።
ውጽኢት ምድላይ ኣብ እተርእየሉ እዋን፡ ስም እቲ ምዕራፍ ይርአ፡ ምስ ጠወቕካ ድማ እቲ ምዕራፍ ኪንቀሳቐስ እዩ።
ዝተገልበጠ ምሉእ ጽሑፍ ምድላይ ጽሩይ ኣብ ቅድሚት ጫፍ ዝተተግበረ፣ ሰርቨር ኣየድልን። ንኣናእሽቱን ማእከሎትን መርበብ ሓበሬታታት ከም ሰነዳትን ውልቃዊ ብሎግን ኣዝዩ ዝምችእ እዩ።
i18n.site
ክፉት ምንጪ ባዕሉ ዝማዕበለ ጽሩይ ቅድመ-መወዳእታ ምድላይ፡ ብዓቐን ንእሽቶን ቅልጡፍ ምላሽን፡ ጉድለታት ናይቲ ሕጂ ዘሎ ጽሩይ ቅድመ-መወዳእታ ምሉእ ጽሑፍ ምድላይ ይፈትሕን ዝሓሸ ተመኩሮ ተጠቃሚ ይህብን።