Domanda

Ho una tabella di database che contiene metadati sulle immagini, il campo in questione è il campo della didascalia. Voglio che gli utenti siano in grado di inserire parole chiave in una casella di testo e che l'app restituisca una selezione di immagini che corrispondono alle parole chiave in base alla loro didascalia.

Ho già il codice che restituisce un array di singole parole chiave inserite dall'utente ma qual è il modo migliore per fare il confronto. Quindi sto pensando sulla falsariga di ...

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

Ma questo sembra un po 'troppo semplicistico perché non supporterebbe solo la corrispondenza di parole intere. Per non parlare dei caratteri speciali, punteggiatura ecc.

Sento che Regex dovrebbe essere usato qui, ma non sono un esperto Regex. O dovrei spezzare la didascalia in singole parole ed elaborare il confronto sulle parole una per una. Alla ricerca di alcuni suggerimenti davvero!

Sto scrivendo in c # ma posso essere agnostico in termini di lingua penso

EDIT: sono anche abbastanza interessato a ponderare i risultati in base al numero di parole chiave abbinate. Ma non sto cercando di ricreare le immagini di Google qui!

È stato utile?

Soluzione

Probabilmente il modo migliore per farlo sarebbe usare l'indice full-text sul campo didascalia nel database. Lascia che il database faccia il lavoro per te!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top