sql >> Base de Datos >  >> NoSQL >> MongoDB

Búsqueda de texto completo de MongoDB + solución alternativa para la coincidencia parcial de palabras

Lenguaje derivado en la búsqueda de texto utiliza un algoritmo para tratar de relacionar palabras derivadas de una base común (por ejemplo, "correr" debe coincidir con "correr"). Esto es diferente de la coincidencia de prefijo (por ejemplo, "azul" que coincide con "arándano") que desea implementar para una función de autocompletar.

Para utilizar de forma más eficaz typeahead.js con la búsqueda de texto de MongoDB, sugeriría centrarse en prefetch soporte en escritura anticipada:

  • Crear keywords colección que tiene las palabras comunes (quizás con el recuento de frecuencia de uso) utilizadas en su colección. Puede crear esta colección ejecutando Map/Reduce en toda la colección en la que tiene el índice de búsqueda de texto, y mantenga la lista de palabras actualizada usando un Mapa incremental/Reducir a medida que se agregan nuevos documentos.

  • Haga que su aplicación genere un documento JSON a partir de las keywords colección con las palabras clave únicas (quizás limitadas a palabras clave "populares" basadas en la frecuencia de palabras para mantener la lista manejable/relevante).

A continuación, puede utilizar las palabras clave generadas JSON para el autocompletado del lado del cliente con prefetch de typeahead. característica:

$('.mysearch .typeahead').typeahead({
  name: 'mysearch',
  prefetch: '/data/keywords.json'
});

typeahead.js almacenará en caché el prefetch Datos JSON en localStorage para búsquedas del lado del cliente. Cuando se envía el formulario de búsqueda, su aplicación puede usar el lado del servidor MongoDB búsqueda de texto para devolver los resultados completos en orden de relevancia.