1
votes

I am trying to implement customized search in my application. The table structure is given below

main table:

teacher

sub tables:

skills

skill_values

cities

city_values

The searching will be triggered with location which is located in the table city_values with a reference field user_id, and city_id . Here name of the city and its latitude and longitude is found under the table cities. Searching also includes skills, the table relations are similar to city. users table and skill_values table can be related with field user_id in the table skill_values. The table skills and skill_values related with field skill_id in table skill_values.

Here we need find the location of the user who perform this search, and need to filter this results with in 20 miles radius. there are a few other filters also.

My problem is that i need to filter these results without page reload. So i am using ajax, but if number of records increase my ajax request will take a lot of time to get response.

Is that a good idea that if i use some opensource search servers like sphinx or solr for fetching results from server? I am using CAKEPHP for development and my application in hosted on cloud server.

1

1 Answers

0
votes

... but if number of records increase my ajax request will take a lot of time to get response.

Regardless of the search technology, there should be a pagination mechanism of some kind.

You should therefore be able to set the limit or maximum number of results returned per page.

When a user performs a search query, you can use Javascript to request the first page of results.

You can then simply incrementing the page number and request the second, third, fourth page, etc.

This should mean that the top N results always appear in roughly the same amount of time.

It's then up to you to decide if you want to request each page of search results sequentially (ie. as the callback for each successful response), or if you wait for some kind of user input (ie. clicking a 'more' link or scrolling to the end of the results).

The timeline/newsfeed pages on Twitter or Facebook are a good example of this technique.