SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Mohd Saeed Khan (Naukri FED)
suggest.js
Agenda
● What is suggest.js ?
● Glimpse of features
● What is Prefetch library ?
● Architecture overview
● How prefetch library update ?
● What is data personalization & it’s use cases.
● Compatiblity matrix and size
● Dependencies
● Current usage
● What next ?
Suggest.js (suggestion engine) is robust, flexible, and
offers advanced functionalities such as :
● Fast lookups (Autocomplete)
● Related Concepts
● AutoCorrect
● Recent Searches / Search history
● Prefetching (Powered by localStorage)
● Data merging
● Intelligent caching(URL caching)
● Personalised Search (Recent Search/User Based)
What is ‘suggest.js’?
Glimpse of AutoComplete
Glimpse of Related Concept
Glimpse of AutoCorrect
Glimpse of Recent Searches
Will appear automatically on
click or focus inside the
suggestor region
Demo
Architecture Overview
Q: How prefetch Library works ?
Ans: Prefetched data is fetched and processed on
initialization. If the browser supports localstorage, the
processed data gets cached there, to prevent additional
network requests on subsequent page loads and user query.
Resp
Success
Get data against
user query from L.S
e.g. “java”
user wants to
search “java”
Requests same query to
server for “A.C” data
Requests
for version
1
2
12
5
2nd call hits the server for prefetch library
Get Resp. &
Stores
prefetched data
in L.S
if prefetch data
does not exist or
exists with expired
TTL
If response, then stores
version object in L.S
against a version key
Init
Call
Get Response
3
4
6
7
8
9
11
13
14
15
Fail
10
How is prefetch library updated…?
Update/Merge prefetch
data with response
data object
New Request for prefetch
data
Just chill, &
enjoy with
cached data
TTL
expire
?
Get TTL of
prefetch object
from L.S
Response
Init
Call
21 7
9
8
4
5
6 3
Success
Fail
Yes No
Prefetch library updates on the basis of TTL ?
What is data personalization?
Data-Personalization ensures that the data
shown to the user should based on user ID or
recent searches he does.
Data Personalization works on the basis of 5 cases
A prefetch hit goes to server with blank
parameter values
Keyword Blank
Segments Blank
UNID Blank
Response
e.g. http://suggest.naukri.com/prefetch?&0.44103118497878313&
keywords=&segments=&unid=
&callback=suggestInfoEdge
Case 1(not-Logged In): if user visits first time.
Stores response against
“__infoEdge/prefetch” key
A prefetch hit goes to server
with parameter values as
shown in the table.
Keyword JAVA, PHP
Segments @all|1
UNID Blank
Response
e.g.
http://suggest.naukri.com
/prefetch?&0.44103118497878313
&keywords=JAVA,PHP
&segments=@all|1
&unid=
&callback=suggestInfoEdge
Case 2 (not-Logged In): if user searches something and Suggestor gets
Recent Searches from cache.
Get data stored
against prefetch
key from L.S.
Stores Merged
Response against the
same key
1
2
3
A prefetch hit goes to server
with parameter values as
shown in the table.
Keyword JAVA, PHP
Segments @all|1
UNID 765497987
Response
e.g.
http://suggest.naukri.com/prefetch?
&0.44103118497878313&
keywords=JAVA,PHP
&segments=@all|1
&unid=765497987
&callback=suggestInfoEdge
Case 3(logged-In): if Recent Searches exist.
1
Stores data against
“infoedge/prefetch/765497987”
key
this response contains
only user specific data
not whole library
A prefetch hit goes to server
with parameter values as
shown in the table.
Keyword blank
Segments @all|1
UNID 765497987
Response
e.g.
http://suggest.naukri.com/prefetch?
&0.44103118497878313&
keywords=
&segments=@all|1
&unid=765497987
&callback=suggestInfoEdge
Case 4(logged-In): if Recent Searches does not exist.
1
Stores data against
“infoedge/prefetch/765497987”
key
this response contains
only user specific data
not whole library
A prefetch hit goes to server
with parameter values as
shown in the table.
Keyword blank
Segments blank
UNID 765497987
Response
e.g.
http://suggest.naukri.com/prefetch?
&0.44103118497878313&
keywords=
&segments=
&unid=765497987
&callback=suggestInfoEdge
Case 5 (logged-In): if Recent Searches & segments does not
exist.
1
Stores data against
“infoedge/prefetch/765497987”
key
this response contains
whole library
Implementation
HTML
Call Structure...
$('.suggest').suggestor({
domain: "http://suggest.naukimg.com/demo", // mandatory parameter
category: { // mandatory parameter
'location': "Locations"
}
});
//where Locations --> heading/title and location --> bucket/category and
Implementation
Parameters
● url
autoComplete
relatedConcept
checkVersion
prefetch
● appId
● category
● grouping
● multiSearch
● maxSuggestions
● onSelect
● relatedConceptsCategory
● relatedConceptsLimit
● sourceId
● startSearchAfter
● showRelatedConcept
● suggestOnClick
● trackUserInteraction
● whiteListSpecialChar
● scrollStyle // accepts class name
Compatible with jQuery & Zepto
Browser Support
● Internet Explorer 8+
● Chrome 10+
● Firefox 3.5+
● Safari 4+
● Opera 11+
Size
● Production with gziped: 5.50 KB
● Production (minified): 15.38 KB
Dependencies
cookie.js : 745 bytes 395 bytes
JSON Error Support : 1.76 KB 1.09 KB
ncCache : 5.79 KB 1.99 KB
Total minified size = suggest.js(15.38KB) + dependencies(9.2KB) = 24.58 KB
Gzip size = suggest.js(5.50 KB) + dependencies(2.84 KB) = 8.34 KB
minified gZipped
Current Usage
1) Naukri India
a) HTML5 Mobile Sites
b) Jobseeker (Homepage, SRP, Advanced Search, CJA, Apply, QUP, MNJ, GNB,
Registration)
c) Recruiter Profile
d) FastForward
e) CSM
f) Referral
g) Resdex (Advanced Search, GNB, CV preview)
2) Naukri Gulf
a) Resdex (almost on every page)
It is almost implemented on every page of Naukri Apps
What to be next
1. Add custom template support
2. backfilling with remote data. (when number of suggestion insufficient
in prefetch library then an additional call will go to server for
remaining suggestions.)
3. Default suggestions can be shown for empty queries response
4. RTL Support (can be used in Naukri Gulf)
Documentation and Demo also available on GilLab
Fork on GitLab
Suggest.js

Mais conteúdo relacionado

Mais procurados

Dynamic content generation
Dynamic content generationDynamic content generation
Dynamic content generation
Eleonora Ciceri
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core Data
Inferis
 

Mais procurados (20)

Ajax
AjaxAjax
Ajax
 
JavaScript DOM Manipulations
JavaScript DOM ManipulationsJavaScript DOM Manipulations
JavaScript DOM Manipulations
 
Introduction to javascript templating using handlebars.js
Introduction to javascript templating using handlebars.jsIntroduction to javascript templating using handlebars.js
Introduction to javascript templating using handlebars.js
 
Unit 4(it workshop)
Unit 4(it workshop)Unit 4(it workshop)
Unit 4(it workshop)
 
Dynamic content generation
Dynamic content generationDynamic content generation
Dynamic content generation
 
Web&java. jsp
Web&java. jspWeb&java. jsp
Web&java. jsp
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP Services
 
Internet and Web Technology (CLASS-7) [XML and AJAX] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-7) [XML and AJAX] | NIC/NIELIT Web TechnologyInternet and Web Technology (CLASS-7) [XML and AJAX] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-7) [XML and AJAX] | NIC/NIELIT Web Technology
 
Learn javascript easy steps
Learn javascript easy stepsLearn javascript easy steps
Learn javascript easy steps
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.js
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Multi-threaded CoreData Done Right
Multi-threaded CoreData Done RightMulti-threaded CoreData Done Right
Multi-threaded CoreData Done Right
 
RequireJS & Handlebars
RequireJS & HandlebarsRequireJS & Handlebars
RequireJS & Handlebars
 
Jsp intro
Jsp introJsp intro
Jsp intro
 
Java script
Java scriptJava script
Java script
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core Data
 
Introduction to java_script
Introduction to java_scriptIntroduction to java_script
Introduction to java_script
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
Getting Started with Web
Getting Started with WebGetting Started with Web
Getting Started with Web
 

Semelhante a Suggest.js

How Will Going Virtual Impact Your Search Performance?
How Will Going Virtual Impact Your Search Performance?How Will Going Virtual Impact Your Search Performance?
How Will Going Virtual Impact Your Search Performance?
IdeaEng
 

Semelhante a Suggest.js (20)

Journey through high performance django application
Journey through high performance django applicationJourney through high performance django application
Journey through high performance django application
 
[2 d1] elasticsearch 성능 최적화
[2 d1] elasticsearch 성능 최적화[2 d1] elasticsearch 성능 최적화
[2 d1] elasticsearch 성능 최적화
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019
 
Web Crawling with Apache Nutch
Web Crawling with Apache NutchWeb Crawling with Apache Nutch
Web Crawling with Apache Nutch
 
PostgreSQL Performance Problems: Monitoring and Alerting
PostgreSQL Performance Problems: Monitoring and AlertingPostgreSQL Performance Problems: Monitoring and Alerting
PostgreSQL Performance Problems: Monitoring and Alerting
 
Drupal Performance : DrupalCamp North
Drupal Performance : DrupalCamp NorthDrupal Performance : DrupalCamp North
Drupal Performance : DrupalCamp North
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
How Will Going Virtual Impact Your Search Performance?
How Will Going Virtual Impact Your Search Performance?How Will Going Virtual Impact Your Search Performance?
How Will Going Virtual Impact Your Search Performance?
 
Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019
 
Drupal performance and scalability
Drupal performance and scalabilityDrupal performance and scalability
Drupal performance and scalability
 
Xdebug - Your first, last, and best option for troubleshooting PHP code
Xdebug - Your first, last, and best option for troubleshooting PHP codeXdebug - Your first, last, and best option for troubleshooting PHP code
Xdebug - Your first, last, and best option for troubleshooting PHP code
 
Struts2-Spring=Hibernate
Struts2-Spring=HibernateStruts2-Spring=Hibernate
Struts2-Spring=Hibernate
 
Java Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : DatastoreJava Web Programming on Google Cloud Platform [2/3] : Datastore
Java Web Programming on Google Cloud Platform [2/3] : Datastore
 
Generating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status CodesGenerating the Server Response: HTTP Status Codes
Generating the Server Response: HTTP Status Codes
 
Django
DjangoDjango
Django
 
GDSC Backend Bootcamp.pptx
GDSC Backend Bootcamp.pptxGDSC Backend Bootcamp.pptx
GDSC Backend Bootcamp.pptx
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
 
Advance Features of Hibernate
Advance Features of HibernateAdvance Features of Hibernate
Advance Features of Hibernate
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Suggest.js

  • 1. Mohd Saeed Khan (Naukri FED) suggest.js
  • 2. Agenda ● What is suggest.js ? ● Glimpse of features ● What is Prefetch library ? ● Architecture overview ● How prefetch library update ? ● What is data personalization & it’s use cases. ● Compatiblity matrix and size ● Dependencies ● Current usage ● What next ?
  • 3. Suggest.js (suggestion engine) is robust, flexible, and offers advanced functionalities such as : ● Fast lookups (Autocomplete) ● Related Concepts ● AutoCorrect ● Recent Searches / Search history ● Prefetching (Powered by localStorage) ● Data merging ● Intelligent caching(URL caching) ● Personalised Search (Recent Search/User Based) What is ‘suggest.js’?
  • 7. Glimpse of Recent Searches Will appear automatically on click or focus inside the suggestor region Demo
  • 9. Q: How prefetch Library works ? Ans: Prefetched data is fetched and processed on initialization. If the browser supports localstorage, the processed data gets cached there, to prevent additional network requests on subsequent page loads and user query.
  • 10. Resp Success Get data against user query from L.S e.g. “java” user wants to search “java” Requests same query to server for “A.C” data Requests for version 1 2 12 5 2nd call hits the server for prefetch library Get Resp. & Stores prefetched data in L.S if prefetch data does not exist or exists with expired TTL If response, then stores version object in L.S against a version key Init Call Get Response 3 4 6 7 8 9 11 13 14 15 Fail 10
  • 11. How is prefetch library updated…?
  • 12. Update/Merge prefetch data with response data object New Request for prefetch data Just chill, & enjoy with cached data TTL expire ? Get TTL of prefetch object from L.S Response Init Call 21 7 9 8 4 5 6 3 Success Fail Yes No Prefetch library updates on the basis of TTL ?
  • 13. What is data personalization? Data-Personalization ensures that the data shown to the user should based on user ID or recent searches he does.
  • 14. Data Personalization works on the basis of 5 cases
  • 15. A prefetch hit goes to server with blank parameter values Keyword Blank Segments Blank UNID Blank Response e.g. http://suggest.naukri.com/prefetch?&0.44103118497878313& keywords=&segments=&unid= &callback=suggestInfoEdge Case 1(not-Logged In): if user visits first time. Stores response against “__infoEdge/prefetch” key
  • 16. A prefetch hit goes to server with parameter values as shown in the table. Keyword JAVA, PHP Segments @all|1 UNID Blank Response e.g. http://suggest.naukri.com /prefetch?&0.44103118497878313 &keywords=JAVA,PHP &segments=@all|1 &unid= &callback=suggestInfoEdge Case 2 (not-Logged In): if user searches something and Suggestor gets Recent Searches from cache. Get data stored against prefetch key from L.S. Stores Merged Response against the same key 1 2 3
  • 17. A prefetch hit goes to server with parameter values as shown in the table. Keyword JAVA, PHP Segments @all|1 UNID 765497987 Response e.g. http://suggest.naukri.com/prefetch? &0.44103118497878313& keywords=JAVA,PHP &segments=@all|1 &unid=765497987 &callback=suggestInfoEdge Case 3(logged-In): if Recent Searches exist. 1 Stores data against “infoedge/prefetch/765497987” key this response contains only user specific data not whole library
  • 18. A prefetch hit goes to server with parameter values as shown in the table. Keyword blank Segments @all|1 UNID 765497987 Response e.g. http://suggest.naukri.com/prefetch? &0.44103118497878313& keywords= &segments=@all|1 &unid=765497987 &callback=suggestInfoEdge Case 4(logged-In): if Recent Searches does not exist. 1 Stores data against “infoedge/prefetch/765497987” key this response contains only user specific data not whole library
  • 19. A prefetch hit goes to server with parameter values as shown in the table. Keyword blank Segments blank UNID 765497987 Response e.g. http://suggest.naukri.com/prefetch? &0.44103118497878313& keywords= &segments= &unid=765497987 &callback=suggestInfoEdge Case 5 (logged-In): if Recent Searches & segments does not exist. 1 Stores data against “infoedge/prefetch/765497987” key this response contains whole library
  • 21. Call Structure... $('.suggest').suggestor({ domain: "http://suggest.naukimg.com/demo", // mandatory parameter category: { // mandatory parameter 'location': "Locations" } }); //where Locations --> heading/title and location --> bucket/category and Implementation
  • 22. Parameters ● url autoComplete relatedConcept checkVersion prefetch ● appId ● category ● grouping ● multiSearch ● maxSuggestions ● onSelect ● relatedConceptsCategory ● relatedConceptsLimit ● sourceId ● startSearchAfter ● showRelatedConcept ● suggestOnClick ● trackUserInteraction ● whiteListSpecialChar ● scrollStyle // accepts class name
  • 23. Compatible with jQuery & Zepto Browser Support ● Internet Explorer 8+ ● Chrome 10+ ● Firefox 3.5+ ● Safari 4+ ● Opera 11+ Size ● Production with gziped: 5.50 KB ● Production (minified): 15.38 KB
  • 24. Dependencies cookie.js : 745 bytes 395 bytes JSON Error Support : 1.76 KB 1.09 KB ncCache : 5.79 KB 1.99 KB Total minified size = suggest.js(15.38KB) + dependencies(9.2KB) = 24.58 KB Gzip size = suggest.js(5.50 KB) + dependencies(2.84 KB) = 8.34 KB minified gZipped
  • 25. Current Usage 1) Naukri India a) HTML5 Mobile Sites b) Jobseeker (Homepage, SRP, Advanced Search, CJA, Apply, QUP, MNJ, GNB, Registration) c) Recruiter Profile d) FastForward e) CSM f) Referral g) Resdex (Advanced Search, GNB, CV preview) 2) Naukri Gulf a) Resdex (almost on every page) It is almost implemented on every page of Naukri Apps
  • 26. What to be next 1. Add custom template support 2. backfilling with remote data. (when number of suggestion insufficient in prefetch library then an additional call will go to server for remaining suggestions.) 3. Default suggestions can be shown for empty queries response 4. RTL Support (can be used in Naukri Gulf)
  • 27. Documentation and Demo also available on GilLab Fork on GitLab