brief: | i18n.site ਹੁਣ ਸਰਵਰ ਰਹਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ।

ਇਹ ਲੇਖ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਤਕਨਾਲੋਜੀ ਦੇ ਲਾਗੂਕਰਨ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ IndexedDB ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਉਲਟ ਸੂਚਕਾਂਕ, ਪ੍ਰੀਫਿਕਸ ਖੋਜ, ਸ਼ਬਦ ਸੈਗਮੈਂਟੇਸ਼ਨ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਅਤੇ ਬਹੁ-ਭਾਸ਼ਾ ਸਹਿਯੋਗ ਸ਼ਾਮਲ ਹੈ।

ਮੌਜੂਦਾ ਹੱਲਾਂ ਦੀ ਤੁਲਨਾ ਵਿੱਚ, i18n.site ਦੀ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਆਕਾਰ ਵਿੱਚ ਛੋਟੀ ਅਤੇ ਤੇਜ਼ ਹੈ, ਛੋਟੇ ਅਤੇ ਮੱਧਮ ਆਕਾਰ ਦੀਆਂ ਵੈੱਬਸਾਈਟਾਂ ਜਿਵੇਂ ਕਿ ਦਸਤਾਵੇਜ਼ਾਂ ਅਤੇ ਬਲੌਗਾਂ ਲਈ ਢੁਕਵੀਂ ਹੈ, ਅਤੇ ਔਫਲਾਈਨ ਉਪਲਬਧ ਹੈ।


ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਉਲਟਾ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ

ਕ੍ਰਮ

ਕਈ ਹਫ਼ਤਿਆਂ ਦੇ ਵਿਕਾਸ ਤੋਂ ਬਾਅਦ i18n.site (ਇੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਥਿਰ markdown ਬਹੁ-ਭਾਸ਼ਾਈ ਅਨੁਵਾਦ & ਵੈਬਸਾਈਟ ਬਿਲਡਿੰਗ ਟੂਲ) ਹੁਣ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।

ਇਹ ਲੇਖ ਖੋਜ ਪ੍ਰਭਾਵ ਦਾ i18n.site ਕਰਨ ਲਈ i18n.site ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਵਿਜ਼ਿਟ ਦੇ ਤਕਨੀਕੀ ਅਮਲ ਨੂੰ ਸਾਂਝਾ ਕਰੇਗਾ।

ਕੋਡ ਓਪਨ : ਖੋਜ ਕਰਨਲ / ਇੰਟਰਐਕਟਿਵ ਇੰਟਰਫੇਸ

ਸਰਵਰ ਰਹਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੱਲਾਂ ਦੀ ਇੱਕ ਸੰਖੇਪ ਜਾਣਕਾਰੀ

ਛੋਟੇ ਅਤੇ ਦਰਮਿਆਨੇ ਆਕਾਰ ਦੀਆਂ ਸ਼ੁੱਧ ਸਥਿਰ ਵੈੱਬਸਾਈਟਾਂ ਜਿਵੇਂ ਕਿ ਦਸਤਾਵੇਜ਼/ਨਿੱਜੀ ਬਲੌਗ ਲਈ, ਸਵੈ-ਨਿਰਮਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਬੈਕਐਂਡ ਬਣਾਉਣਾ ਬਹੁਤ ਭਾਰੀ ਹੈ, ਅਤੇ ਸੇਵਾ-ਮੁਕਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਵਧੇਰੇ ਆਮ ਵਿਕਲਪ ਹੈ।

ਸਰਵਰ ਰਹਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੱਲ ਦੋ ਵਿਆਪਕ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਆਉਂਦੇ ਹਨ:

ਪਹਿਲਾਂ, algolia.com ਥਰਡ-ਪਾਰਟੀ ਖੋਜ ਸੇਵਾ ਪ੍ਰਦਾਤਾ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਲਈ ਫਰੰਟ-ਐਂਡ ਕੰਪੋਨੈਂਟ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।

ਅਜਿਹੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਖੋਜ ਵਾਲੀਅਮ ਦੇ ਆਧਾਰ 'ਤੇ ਭੁਗਤਾਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਵੈੱਬਸਾਈਟ ਦੀ ਪਾਲਣਾ ਵਰਗੇ ਮੁੱਦਿਆਂ ਦੇ ਕਾਰਨ ਮੁੱਖ ਭੂਮੀ ਚੀਨ ਵਿੱਚ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਅਕਸਰ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦੀਆਂ ਹਨ।

ਇਸਨੂੰ ਔਫਲਾਈਨ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇੰਟਰਾਨੈੱਟ 'ਤੇ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਸ ਦੀਆਂ ਬਹੁਤ ਸਾਰੀਆਂ ਸੀਮਾਵਾਂ ਹਨ। ਇਹ ਲੇਖ ਬਹੁਤੀ ਚਰਚਾ ਨਹੀਂ ਕਰਦਾ।

ਦੂਜਾ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੈ।

ਵਰਤਮਾਨ ਵਿੱਚ, ਆਮ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ lunrjs ਅਤੇ ElasticLunr.js ( lunrjs ਸੈਕੰਡਰੀ ਵਿਕਾਸ 'ਤੇ ਅਧਾਰਤ)।

lunrjs ਇੰਡੈਕਸ ਬਣਾਉਣ ਦੇ ਦੋ ਤਰੀਕੇ ਹਨ, ਅਤੇ ਦੋਵਾਂ ਦੀਆਂ ਆਪਣੀਆਂ ਸਮੱਸਿਆਵਾਂ ਹਨ।

  1. ਪ੍ਰੀ-ਬਿਲਟ ਇੰਡੈਕਸ ਫਾਈਲਾਂ

    ਕਿਉਂਕਿ ਸੂਚਕਾਂਕ ਵਿੱਚ ਸਾਰੇ ਦਸਤਾਵੇਜ਼ਾਂ ਦੇ ਸ਼ਬਦ ਸ਼ਾਮਲ ਹਨ, ਇਹ ਆਕਾਰ ਵਿੱਚ ਵੱਡਾ ਹੈ। ਜਦੋਂ ਵੀ ਕੋਈ ਦਸਤਾਵੇਜ਼ ਜੋੜਿਆ ਜਾਂ ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇੱਕ ਨਵੀਂ ਇੰਡੈਕਸ ਫਾਈਲ ਲੋਡ ਕੀਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਉਪਭੋਗਤਾ ਦੇ ਉਡੀਕ ਸਮੇਂ ਨੂੰ ਵਧਾਏਗਾ ਅਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਬੈਂਡਵਿਡਥ ਦੀ ਖਪਤ ਕਰੇਗਾ.

  2. ਦਸਤਾਵੇਜ਼ ਲੋਡ ਕਰੋ ਅਤੇ ਫਲਾਈ 'ਤੇ ਇੰਡੈਕਸ ਬਣਾਓ

    ਇੱਕ ਸੂਚਕਾਂਕ ਬਣਾਉਣਾ ਇੱਕ ਗਣਨਾਤਮਕ ਤੌਰ 'ਤੇ ਤੀਬਰ ਕੰਮ ਹੈ ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਇਸ ਤੱਕ ਪਹੁੰਚ ਕਰਦੇ ਹੋ ਤਾਂ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਪਛੜ ਜਾਂਦਾ ਹੈ ਅਤੇ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਖਰਾਬ ਹੁੰਦਾ ਹੈ।


lunrjs ਤੋਂ ਇਲਾਵਾ, ਕੁਝ ਹੋਰ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੱਲ ਹਨ, ਜਿਵੇਂ ਕਿ :

fusejs ਖੋਜ ਕਰਨ ਲਈ ਸਤਰ ਦੇ ਵਿਚਕਾਰ ਸਮਾਨਤਾ ਦੀ ਗਣਨਾ ਕਰੋ।

ਇਸ ਹੱਲ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਬਹੁਤ ਮਾੜੀ ਹੈ ਅਤੇ ਪੂਰੀ-ਪਾਠ ਖੋਜ ਲਈ ਨਹੀਂ ਵਰਤੀ ਜਾ ਸਕਦੀ (ਵੇਖੋ Fuse.js ਲੰਬੀ ਪੁੱਛਗਿੱਛ 10 ਸਕਿੰਟਾਂ ਤੋਂ ਵੱਧ ਲੈਂਦੀ ਹੈ, ਇਸਨੂੰ ਕਿਵੇਂ ਅਨੁਕੂਲ ਬਣਾਇਆ ਜਾਵੇ? )।

TinySearch , ਖੋਜ ਕਰਨ ਲਈ ਬਲੂਮ ਫਿਲਟਰ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਅਗੇਤਰ ਖੋਜ ਲਈ ਨਹੀਂ ਵਰਤੀ ਜਾ ਸਕਦੀ (ਉਦਾਹਰਨ ਲਈ, goo ਦਰਜ ਕਰੋ, ਖੋਜ good , google ), ਅਤੇ ਸਮਾਨ ਆਟੋਮੈਟਿਕ ਸੰਪੂਰਨਤਾ ਪ੍ਰਭਾਵ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ।

ਮੌਜੂਦਾ ਹੱਲਾਂ ਦੀਆਂ ਕਮੀਆਂ ਦੇ ਕਾਰਨ, i18n.site ਨੇ ਇੱਕ ਨਵਾਂ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਹੱਲ ਵਿਕਸਿਤ ਕੀਤਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਹੇਠ ਲਿਖੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਹਨ :

  1. ਬਹੁ-ਭਾਸ਼ਾ ਖੋਜ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਅਤੇ ਆਕਾਰ ਵਿੱਚ ਛੋਟਾ ਹੁੰਦਾ ਹੈ gzip ਪੈਕੇਜਿੰਗ ਤੋਂ ਬਾਅਦ ਖੋਜ ਕਰਨਲ ਦਾ ਆਕਾਰ 6.9KB ਹੈ (ਤੁਲਨਾ ਲਈ, lunrjs ਦਾ ਆਕਾਰ 25KB ਹੈ)
  2. indexedb ਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਉਲਟ ਸੂਚਕਾਂਕ ਬਣਾਓ, ਜੋ ਘੱਟ ਮੈਮੋਰੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਤੇਜ਼ ਹੁੰਦਾ ਹੈ।
  3. ਜਦੋਂ ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਜੋੜਿਆ/ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ, ਸਿਰਫ਼ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਂ ਸੋਧੇ ਹੋਏ ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਮੁੜ-ਸੂਚੀਬੱਧ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਗਣਨਾ ਦੀ ਮਾਤਰਾ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ।
  4. ਪ੍ਰੀਫਿਕਸ ਖੋਜ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਜੋ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਟਾਈਪ ਕਰਨ ਵੇਲੇ ਅਸਲ ਸਮੇਂ ਵਿੱਚ ਖੋਜ ਨਤੀਜੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰ ਸਕਦਾ ਹੈ।
  5. ਔਫਲਾਈਨ ਉਪਲਬਧ ਹੈ

ਹੇਠਾਂ, 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()

ਵਿੱਚ:

ਇੰਡੈਕਸ ਬਿਲਡਿੰਗ

5 ਆਬਜੈਕਟ ਸਟੋਰੇਜ ਟੇਬਲ IndexedDB ਵਿੱਚ ਬਣਾਏ ਗਏ ਸਨ :

ਦਸਤਾਵੇਜ਼ 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 ਓਪਨ ਸੋਰਸ ਸਵੈ-ਵਿਕਸਤ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਖੋਜ, ਆਕਾਰ ਵਿੱਚ ਛੋਟੀ ਅਤੇ ਤੇਜ਼ ਜਵਾਬ, ਮੌਜੂਦਾ ਸ਼ੁੱਧ ਫਰੰਟ-ਐਂਡ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਦੀਆਂ ਕਮੀਆਂ ਨੂੰ ਹੱਲ ਕਰਦੀ ਹੈ ਅਤੇ ਇੱਕ ਬਿਹਤਰ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।