Pergunta

Eu tenho uma tabela de banco de dados que contém metadados sobre as imagens, o campo de preocupação é o campo de legenda. Eu quero que os usuários sejam capazes de digitar palavras-chave em uma caixa de texto e ter o aplicativo retornar uma seleção de imagens que correspondem às palavras-chave com base em sua legenda.

Eu já tenho o código que retorna uma matriz das palavras-chave individuais inseridos pelo usuário, mas o que é a melhor maneira de fazer a comparação. Então, eu estou pensando ao longo das linhas de ...

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

Mas isso só parece um pouco demasiado simplista, porque não iria suportar apenas correspondentes palavras inteiras. para não mencionar os caracteres especiais, pontuação etc.

Eu me sinto como Regex deve ser usado aqui, mas eu não sou nenhum perito Regex. Ou eu deveria estar quebrando a legenda em palavras individuais e processar a comparação de palavras, um por um. Procurando algumas sugestões realmente!

Eu estou escrevendo em c #, mas pode ser independente de linguagem Acho

EDIT: Eu também estou bastante interessado em ponderando os resultados com base no número de palavras-chave correspondentes. Mas eu não estou tentando recriar Google imagens aqui!

Foi útil?

Solução

Provavelmente a melhor maneira de fazer isso seria a utilização de índice de texto completo no campo de legenda no banco de dados. Deixe o banco de dados de fazer o trabalho para você!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top