Je voudrais juste dire... Une bonne solution à ce problème va incorporer plus qu'un arbre de recherche ternaire. Des Ngrams et des Shingles (phrases) sont nécessaires. Les erreurs de frontières entre les mots doivent également être détectées. "hell o" devrait être "hello" ... et "whitesocks" devrait être "white socks" - ce sont des étapes de prétraitement. Si vous ne pré-traitez pas les données correctement, vous n'obtiendrez pas de résultats de recherche valables. Les arbres de recherche ternaires sont un élément utile pour déterminer ce qu'est un mot, et aussi pour mettre en œuvre la supposition de mots apparentés lorsqu'un mot tapé n'est pas un mot valide dans l'index.
L'algorithme de Google suggère et corrige les phrases. L'algorithme de Google a également une certaine notion du contexte... si le premier mot que vous recherchez est lié à la météo et que vous les combinez "weatherforcst" vs "monsoonfrcst" vs "deskfrcst" - je suppose que, dans les coulisses, les classements sont modifiés dans la suggestion en fonction du premier mot rencontré - la prévision et la météo sont des mots liés, donc la prévision obtient un rang élevé dans la suggestion "Did-You-Mean".
mots-partiels (ngrams), phrases-termes (shingles), mots-proximité (word-clustering-index), arbre de recherche ternaire (word lookup).
1 votes
Ces choses, à l'échelle de Google, comptent parmi les plus grandes réalisations de l'industrie. Je vous suggère de commencer par quelque chose d'un peu plus restreint
0 votes
@Michael : Je ne demande pas un algorithme comme celui de google... mais quelque chose de mieux que trie... aussi pourriez-vous suggérer quelque chose de petit mais mieux que tries...
0 votes
J'ai supprimé la demande d'une solution du type de l'autocomplétion de Google parce que c'est tout simplement ridicule.