Sto cercando di implementare una funzione di completamento automatico per un motore di ricerca. Ho un database di parole (derivato) che si verificano nei documenti che ho per gli utenti di cercare.
Quello che sto pensando di fare è:
-
Costruire un grafico con parole come nodi e bordi ponderati con pesi come il numero di volte in cui queste 2 parole sono state ricercate insieme.
-
Ogni nodo tiene traccia di quale sia la parola più comunemente digitata accanto ad essa.
-
Ogni volta che un utente inizia a digitare la sua query, questo grafico viene interrogato e la prima parola è prevista dalla corrispondenza delle stringhe e quindi classifica le parole corrispondenti in base alla frequenza di ricerca.
-
Quando l'utente inizia a digitare la parola successiva, il grafico viene visitato e i vicini di questo nodo vengono recuperati e mostrati all'utente in ordine di frequenza (peso dei bordi).
Questa è una panoramica approssimativa di ciò che sto cercando di ottenere. Non l'ho ancora implementato. Richiederebbe una buona dose di lavoro per implementarlo e penso che sarebbe piuttosto lento. E per essere onesti, non penso che fare tanto lavoro sapendo che sarà piuttosto lento ne vale la pena.
Se sono sulla strada giusta con questo progetto concettuale, ci sono delle ottimizzazioni che dovrebbero essere apportate a questo per migliorare le prestazioni? O forse un design completamente diverso che dovrei usare invece?
Ho trovato solo 2 documenti sulla previsione delle query, questo e questo . Sono passato attraverso quest'ultimo, ma non è collegato al mio caso d'uso.