MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ricerca fulltext MongoDB + soluzione alternativa per la corrispondenza parziale delle parole

Descrizione del linguaggio nella ricerca testuale usa un algoritmo per cercare di mettere in relazione parole derivate da una base comune (es. "running" dovrebbe corrispondere a "run"). È diverso dalla corrispondenza del prefisso (ad es. "blu" corrispondente a "mirtillo") che desideri implementare per una funzione di completamento automatico.

Per utilizzare nel modo più efficace typeahead.js con la ricerca di testo MongoDB suggerirei di concentrarmi sul prefetch supporto in typehead:

  • Crea una keywords raccolta che contiene le parole comuni (forse con conteggio della frequenza di utilizzo) utilizzate nella tua raccolta. Puoi creare questa raccolta eseguendo una mappa/riduci nella raccolta hai l'indice di ricerca del testo e mantieni aggiornato l'elenco di parole utilizzando un periodico Mappa/Riduci incrementale man mano che vengono aggiunti nuovi documenti.

  • Chiedi alla tua applicazione di generare un documento JSON dalle keywords raccolta con le parole chiave univoche (magari limitate a parole chiave "popolari" in base alla frequenza delle parole per mantenere l'elenco gestibile/rilevante).

È quindi possibile utilizzare le parole chiave generate JSON per il completamento automatico lato client con il prefetch di typeahead caratteristica:

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

typeahead.js memorizzerà nella cache il prefetch Dati JSON in localStorage per ricerche lato client. Quando il modulo di ricerca viene inviato, la tua domanda può utilizzare il lato server MongoDB ricerca di testo per restituire i risultati completi in ordine di pertinenza.