Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the best way to implement AutoComplete in the server?

This question is easy people. Make autocomplete beautiful in the client side of a web app is simple. There are a lot of plugins.

But, in the backside, in the server side, what's the best way to do it? I don't like the idea to hit the DB with each keypressed by the user.

I've been thinking about sphinx, or some full-text search engine running parallel from your site.

For example, if i have a PHP (high traffic) web site, i can create a parallel python script that get http requests from my "autocomplete textboxes". Then, when a user is pressing a key in the client side, the AJAX requests are directed to that python script that can use a special strategy.

What's your aproach?

Some conventions:

  • Try not to hit the DB. I mean, get the request and do something SELECT * FROM foo WHERE bar LIKE "req%" is not a good answer. It may be a good strategy, but i know how to do it.*
  • Replicated data can be a good choice.
like image 468
santiagobasulto Avatar asked Nov 06 '10 21:11

santiagobasulto


People also ask

How autocomplete works in JS?

The terms are stored as a simple JavaScript array at the top. The browser will call the showResults function after every single keypress. Then it passes the current search to an autocompleteMatch function to get the list of matched terms. Finally, the results are added to the div as an unordered list.


1 Answers

I do agree that you need to have some better solution. Apache solr has a "suggestion" feature that you can use pretty well. If your data set is small then put all the data in memory and just do a simple loop.

On the front end, I recommend using setTimeout() to wait for about 200ms before firing the ajax call. If in that 200ms, another keystroke is triggered, then cancel the last timeout and start another one. This is a really clean solution where it wouldn't hit the db with each keystroke. I have used it in the past and it works really well.

This explains solr with jquery and how to create an autocomplete really well. http://www.mattweber.org/2009/05/02/solr-autosuggest-with-termscomponent-and-jquery/

like image 114
Amir Raminfar Avatar answered Oct 07 '22 13:10

Amir Raminfar