Je suis sûr que j'ai vu un post sur Meta ou SO où Jeff a publié l'algorithme mis à jour qui correspond mieux des commentaires, par exemple quand quelqu'un tape un commentaire:algorithme pour trouver une correspondance d'utilisateur sur @username floue
@Tom did you see
Il correspondra au nom d'utilisateur 'Tom'. S'il y a des caractères spéciaux, dites que mon nom d'utilisateur est 'T0m' et quelqu'un tape @Tom
cela correspond toujours.
Est-ce que quelqu'un a un lien vers cet article s'il existe réellement? Si je me souviens bien, c'était un code qu'il partageait et qui serait utile pour moi!
Dans le cas contraire, donné une liste de noms d'utilisateurs qui sont impliqués dans la discussion:
users[0] = "Tom"
users[1] = "Peanut"
users[2] = "Ashley"
users[3] = "Jon"
users[4] = "AARÓN"
Et vous donne @Aaron
ou @Aron
comme entrée, ce qui est la meilleure façon de sélectionner l'utilisateur approprié étant mentionné dans la liste?
Un algorithme général serait bien, mais le site pour lequel je le fais est ASP.net C# donc s'il y a un exemple dans ce langage ce serait génial. Voilà ce que j'ai jusqu'à présent, il fonctionne très bien pour les matches EXACT (tous les minuscules):
// Find comment references
if (Search.Type != Alerts.SectionType.error)
{
// A list of all lower case usernames refered to in this thread
string[] References = Alerts.CommonFunctions.extractReferences(Comment);
// Only proceed if any references are found
if (References.Count() > 0)
{
// Extract all usernames involved in this comment discussion
UserBasic[] UsernamesInThread = getAllUsernamesInThread(Anchor);
// Loop each reference
foreach (string r in References)
{
// Try to find a match
foreach (UserBasic u in UsernamesInThread)
{
// Exact match found
if (r == u.Username)
{
// Check it's not original author (we can then ignore as alert already issued)
if (u.UserID != Search.OriginalAuthorID)
{
Alerts.CommonFunctions.createAlert(u.UserID, Settings.CommentReplyAlertID, Search.URL, Search.Title);
}
break;
}
}
}
}
}
Peut-être que cela? http://en.wikipedia.org/wiki/Levenshtein_distance –
Ne pas oublier l'espacement des lettres - e devrait correspondre à plus de l. – apscience