Question

J'ai une table de base de données qui contient des métadonnées sur les images, le champ en question est le champ de légende. Je souhaite que les utilisateurs puissent saisir des mots-clés dans une zone de texte et que l'application renvoie une sélection d'images correspondant aux mots-clés en fonction de leur légende.

J'ai déjà le code qui renvoie un tableau des mots-clés individuels entrés par l'utilisateur, mais quel est le meilleur moyen de faire la comparaison. Donc, je pense dans le sens de ...

foreach (Image image in Images)
{
    foreach (string keyword in keywords)
    {
        if (image.Caption.Contains(keyword))
        {
            imageCollection.Add(image);
            break;
        }
    }
}

Mais cela semble juste un peu trop simpliste, car cela ne prendrait pas en charge la correspondance de mots entiers uniquement. Sans parler des caractères spéciaux, de la ponctuation, etc.

Je pense que Regex devrait être utilisé ici, mais je ne suis pas un expert de Regex. Ou devrais-je diviser la légende en mots individuels et traiter la comparaison sur les mots un par un. Vous recherchez vraiment des suggestions!

J'écris en c # mais je peux être agnostique, je pense

MODIFIER: je suis également très intéressé par la pondération des résultats en fonction du nombre de mots clés correspondants. Mais je ne cherche pas à recréer des images Google ici!

Était-ce utile?

La solution

La meilleure solution consiste probablement à utiliser un index de texte intégral sur le champ de légende de la base de données. Laissez la base de données faire le travail pour vous!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top