¿En qué tipo de índices de búsqueda y enfoque se debe trabajar para un sitio web con búsqueda basada en la ciudad (y localidad) de una palabra clave, un ejemplo típico es un directorio web?

Un motor de búsqueda local debe admitir búsquedas tanto por palabras clave como por ubicación. Además de indexar cada documento por palabras clave de acuerdo con su contenido, uno debe indexar su ubicación (digamos par lat / long) y tal vez el nombre de una ciudad. Para mantener la búsqueda eficiente, uno debe filtrar en función del conjunto más pequeño: documentos que coinciden con las palabras clave o documentos que coinciden con la restricción geográfica (por ejemplo, dentro de un círculo de radio de 5 km a mi alrededor). Consulte la explicación de Patrick O’leary sobre Local Lucene [1], y el artículo de Grant Ingersoll sobre el mismo tema.
[1] http://www.nsshutdown.com/projec…
[2] http://www.ibm.com/developerwork…

EDITAR:
Varun Jain sugirió una estructura diferente en su comentario. Aquí está mi respuesta:
Se refiere a tres tablas: palabras clave, ciudades, distancia.
Este es un esquema de base de datos relacional, que puede ser aplicable aquí.
Permítanme sugerir un esquema diferente, que describiré en la terminología de Lucene:
Almacene un solo documento por, por ejemplo, tienda o película.
Cada documento tendrá un campo de ciudad, un campo de título y contenido y un campo de ubicación (lat / long).
Al consultar por restaurantes chinos en Londres,
consulta el índice para una coincidencia con la ciudad Y el restaurante chino, algo así como:
+ ciudad: Londres + título: restaurante chino
Luego ordena los resultados por distancia desde tu ubicación.
Esta es una consulta única en Lucene / Solr, en lugar de varias combinaciones en una base de datos.
Creo que esta es una solución más eficiente. Si utiliza un motor de búsqueda diferente o utiliza uno propio, YMMV.

Google está trabajando en la creación de una API de búsqueda en su App Engine. Esto todavía está en etapa experimental, pero definitivamente tendrá un gran impacto en el futuro cercano.

https://developers.google.com/ap

More Interesting

¿Cuál es el criterio de elección para el desarrollo de algoritmos recursivos o iterativos?

¿Qué es mejor entre la búsqueda binaria y el árbol de búsqueda binaria para buscar?

Cuando un algoritmo de árbol de decisión se enfrenta a dos atributos que producen divisiones igualmente buenas en un árbol, ¿cómo eligen uno sobre otro?

¿Cuál es la mejor estructura de datos para un juego de ajedrez?

¿Cuáles son las estrategias más populares utilizadas en el comercio de alta frecuencia?

Si existen múltiples rutas más cortas entre 2 nodos en un gráfico no dirigido, ¿es posible imprimirlas todas utilizando el algoritmo de Dijkstra?

¿Existe un algoritmo para resolver el problema de la mochila 0/1 acotada multidimensional en PTIME?

¿Cuál es la complejidad temporal de las funciones incorporadas en C ++?

Solo conozco algunos conceptos básicos de c ++. ¿Qué libros o tutoriales debo consultar para resolver problemas en spoj y codechef?

Cómo probar la diferencia significativa entre dos algoritmos de clasificación

¿Cómo debo hacer uso de sitios como HackerEarth y GeeksforGeeks si tengo habilidades de algoritmos por debajo del promedio?

¿Qué pregunta deben hacer los principiantes en Codeforces, SPOJ, etc. para aprender algoritmos estándar?

¿Cuál es la relación entre el índice de una matriz y el tamaño de una matriz?

¿Cómo se puede resolver una variante del problema 3-SAT en tiempo lineal usando divide y vencerás?

¿Cuáles son los mejores algoritmos de partición de gráficos para gráficos grandes?