brief: | i18n.site ਹੁਣ ਸਰਵਰ ਰਹਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ।
ਇਹ ਲੇਖ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਤਕਨਾਲੋਜੀ ਦੇ ਲਾਗੂਕਰਨ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ IndexedDB ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਉਲਟ ਸੂਚਕਾਂਕ, ਪ੍ਰੀਫਿਕਸ ਖੋਜ, ਸ਼ਬਦ ਸੈਗਮੈਂਟੇਸ਼ਨ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਅਤੇ ਬਹੁ-ਭਾਸ਼ਾ ਸਹਿਯੋਗ ਸ਼ਾਮਲ ਹੈ।
ਮੌਜੂਦਾ ਹੱਲਾਂ ਦੀ ਤੁਲਨਾ ਵਿੱਚ, 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
ਨੇ ਇੱਕ ਨਵਾਂ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੱਲ ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਹੇਠ ਲਿਖੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਹਨ :
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 + ਸ਼ੁੱਧ css ਲਾਗੂ" ਅੰਗਰੇਜ਼ੀ / ਚੀਨੀ ।
ਪ੍ਰੋਜੈਕਟ ਨੂੰ IndexedDB ਦੇ ਅਸਿੰਕ੍ਰੋਨਸ ਇਨਕੈਪਸੂਲੇਸ਼ਨ ਦੇ ਅਧਾਰ ਤੇ 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
ਸ਼ਬਦ ਹਨ, ਨਤੀਜੇ ਵਾਪਸ ਕਰਨ ਵੇਲੇ, ਸਾਰੇ ਕੀਵਰਡ ਵਾਲੇ ਨਤੀਜੇ ਵਾਪਸ ਕੀਤੇ ਜਾਣਗੇ, ਅਤੇ ਫਿਰ N-1
, N-2
,..., 1
ਕੀਵਰਡ ਵਾਲੇ ਨਤੀਜੇ ਵਾਪਸ ਕੀਤੇ ਜਾਣਗੇ।
ਪ੍ਰਦਰਸ਼ਿਤ ਖੋਜ ਨਤੀਜੇ ਪਹਿਲਾਂ ਪੁੱਛਗਿੱਛ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਲੋਡ ਕੀਤੇ ਗਏ ਨਤੀਜੇ (ਹੋਰ ਲੋਡ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ) ਰੀਕਾਲ ਰੇਟ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ।
ਜਵਾਬ ਦੀ ਗਤੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ, ਖੋਜ ਆਨ-ਡਿਮਾਂਡ ਲੋਡਿੰਗ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ yield
ਜਨਰੇਟਰ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ, ਅਤੇ limit
ਵਾਰ ਨਤੀਜਾ ਪੁੱਛਣ 'ਤੇ ਵਾਪਸ ਆਉਂਦੀ ਹੈ।
ਨੋਟ ਕਰੋ ਕਿ ਹਰ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ yield
ਤੋਂ ਬਾਅਦ ਦੁਬਾਰਾ ਖੋਜ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ IndexedDB
ਦੀ ਪੁੱਛਗਿੱਛ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਨੂੰ ਦੁਬਾਰਾ ਖੋਲ੍ਹਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਜਦੋਂ ਉਪਭੋਗਤਾ ਟਾਈਪ ਕਰ ਰਿਹਾ ਹੁੰਦਾ ਹੈ ਤਾਂ ਖੋਜ ਨਤੀਜਿਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ, ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ wor
ਦਰਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ wor
ਨਾਲ ਪ੍ਰੀਫਿਕਸ ਕੀਤੇ ਸ਼ਬਦ ਜਿਵੇਂ ਕਿ words
ਅਤੇ work
ਪ੍ਰਦਰਸ਼ਿਤ ਹੁੰਦੇ ਹਨ।
ਸਰਚ ਕਰਨਲ 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
ਓਪਨ ਸੋਰਸ ਸਵੈ-ਵਿਕਸਤ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਖੋਜ, ਆਕਾਰ ਵਿੱਚ ਛੋਟੀ ਅਤੇ ਤੇਜ਼ ਜਵਾਬ, ਮੌਜੂਦਾ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਦੀਆਂ ਕਮੀਆਂ ਨੂੰ ਹੱਲ ਕਰਦੀ ਹੈ ਅਤੇ ਇੱਕ ਬਿਹਤਰ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।