¿Cuál es la mejor práctica y estructura de datos para la aplicación de autocompletado multilingüe?

¿En qué va a buscar el autocompletado? ¿Es simplemente un intento de hacer coincidir las letras ingresadas con las palabras que están en su base de datos? ¿O hay alguna otra “inteligencia” para tratar de colocar el autocompletado en el contexto de lo que sucedió antes?

Si se trata simplemente de una búsqueda de palabras, entonces la búsqueda más efectiva “casi coincidente” es la que utilizan la mayoría de los correctores ortográficos: algo así como un árbol de búsqueda Trie / Ternary / árbol BK. Mire cosas como Levenstein Distance para verificar palabras más cercanas que le permitan sugerir una lista de palabras deletreadas de manera similar.

Si hay un contexto involucrado, entonces necesitaría tener algún tipo de filtro por encima de los árboles utilizados, es decir, eliminar ciertas posibilidades que no coinciden con el contexto.

Para múltiples idiomas, probablemente sea más eficiente simplemente tener un interruptor para establecer qué idioma es el actual. Y luego, dependiendo del valor de ese interruptor, use el vocabulario del lenguaje relevante mapeado en la estructura de árbol. Si simplemente desea que las palabras de todos los idiomas estén disponibles todo el tiempo, solo agréguelas todas juntas y deje que la Distancia de Levenstein resuelva la coincidencia más cercana a lo que sea que esté escribiendo el cliente, aunque desaconsejaría esto, va a confundir a las personas cuando Ver palabras que no entienden. Más bien, mantenga diferentes idiomas separados y no bombardee al usuario con palabras no reconocidas.

More Interesting

¿Estudiar algoritmos mejorará mis habilidades cotidianas de toma de decisiones / resolución de problemas?

Cómo ordenar en orden ascendente en el programa C

¿Cuáles son las ventajas de los algoritmos de aprendizaje de refuerzo como LinUCB sobre otros algoritmos de predicción de CTR en línea como la regresión logística en línea?

¿Cómo funciona la ordenación por fusión en C ++?

¿Cuál es el programa C para encontrar la subsecuencia repetida más larga en un texto dado?

¿Pueden dos funciones hash criptográficas diferentes generar el mismo hash para la misma entrada?

Dado un gráfico no dirigido y dos conjuntos de nodos, ¿cuál es el mejor algoritmo para verificar que cada elemento del primer conjunto sea adyacente a cada elemento del segundo conjunto?

¿Qué es la eficiencia del algoritmo?

¿Cuáles son las cosas básicas en estructuras de datos y algoritmos que debo saber para las ubicaciones en el campus?

Cómo resolver el problema INUMBER usando gráficos

Si F2L se resuelve mejor de forma intuitiva, ¿por qué cada tutorial incluye algoritmos para todos los casos de F2L?

¿Por qué mi método de generador aleatorio no funciona en Java?

¿Por qué la notación O grande no se parece más a O (c) y O (cn) en lugar de a O (1) y O (n), esto último no tiene sentido?

¿Cuál es la diferencia entre el árbol de búsqueda binario y la búsqueda binaria?

¿Por qué es Introducción a los algoritmos una lectura obligada para convertirse en un mejor programador?