2010-06-23 17 views
6

¿Hay alguna forma de configurar autocompletar en PHP/jQuery que pueda ejecutarse rápidamente a través de miles de filas en una base de datos?¿Cómo se utiliza el autocompletar para miles de entradas?

Tengo una bolsa de empleo donde el usuario ingresa a su universidad y quiero ofrecer la función de autocompletar. El problema es que hay 4,500 universidades en los Estados Unidos y parece una solución horrible.

¿Existe una buena manera de hacer la consulta rápida, y devolver los resultados solo cuando hay menos de 10 opciones disponibles?

gracias de antemano, Walker

+1

Simplemente use un LÍMITE en la consulta SQL. No veo ninguna razón para mostrar más de 10 posibles resultados. 4.500 filas en realidad no son un número tan grande en términos de bases de datos. –

+1

Como dijo Byron, simplemente limite los resultados de la consulta. 4500 no es mucho –

+0

¿Pensé que LIMIT era para especificar rangos en la base de datos? ¿Cómo se aplica eso a este problema? Lo siento por la pregunta de novato. – Walker

Respuesta

5

Acepto con Anax. Es posible que desee ver una solución simple como el nuevo jQuery UI Autocomplete field.

Usando las opciones delay y minLength, puede evitar que el script consulte el servidor hasta que el usuario ingrese, por ejemplo, tres caracteres, lo que reduciría la cantidad de resultados.

PS. También hay una opción de almacenamiento en caché que puede ser útil. Puede almacenar en caché toda la lista del lado del cliente, disminuyendo las llamadas a la base de datos.

+0

+ 1 El nuevo jQuery UI Autocomplete es el mejor. – Keyo

3

Su mejor opción es usar AJAX, dado el número de registros. Básicamente, debe controlar las pulsaciones de teclas y llamar a un script PHP, que a su vez obtendrá los registros relevantes de la base de datos.

Un buen ejemplo sería el dhtmlxCombo.

+2

¿Es eso más inteligente que consultar todos los resultados y almacenarlos en una matriz? ¿Está consultando la base de datos cada vez que se presiona una letra menos intensiva/tan rápido? – Walker

+0

Creo que sí. Ya he implementado el cuadro combinado jQuery en un proyecto y estoy extrayendo los resultados de una tabla larga de 10k + registros. No me atrevería a tirar todos los registros y una vez y que los usuarios descarguen un enorme documento html. – Anax

2

En primer lugar, podría solicitar otros calificadores como 'región/estado deseado', 'especialidad', etc. y luego comenzar a autocompletar después de que el usuario haya ingresado 6 o más caracteres para filtrar más de las 4.500 universidades.

+0

Elegí este voto porque a prueba de futuro el concepto de autocompletar. A medida que su conjunto de datos se expande, querrá tomar medidas para adaptar las sugerencias al usuario de la aplicación. Esto es algo que hacemos a través de la geolocalización, los datos del perfil del usuario y el historial de búsqueda. – Markus

0

4500 no es mucho, dependiendo de su hardware/número de usuarios/frecuencia con la que realmente lo necesita, se puede mantener la lista en la memoria (MySQL Memory engine como ejemplo).
Pero, como ya se ha sugerido, cuando solo se obtienen resultados cuando hay 3 letras + es posible que ni siquiera tenga un problema.

+0

excepto por el hecho de que probablemente más de la mitad de los estudiantes en los EE. UU., Por ejemplo, asistan a universidades denominadas 'Universidad de [Nombre del Estado]' – corprew

+0

Si hay muchos resultados comenzando con el mismo nombre, el registro y la codificación difícil ser una solución (si la búsqueda es parte de uni * return "University of" y solo hacer una búsqueda real si hay algunos datos evaluables, algo así) --- y, dependiendo de cómo las personas están usando el formulario, manteniendo el último los resultados en la memoria también podrían ayudar (APC). Verificando los registros si es útil por caso nuevamente .. – Kuchen

+0

Gracias por la información, lo agradezco. – Walker

Cuestiones relacionadas