Каков наилучший подход к поиску ключевых слов в текстовом поле?

StackOverflow https://stackoverflow.com/questions/619107

Вопрос

У меня есть таблица базы данных, в которой хранятся метаданные об изображениях, а поле заголовка - поле заголовка. Я хочу, чтобы пользователи могли вводить ключевые слова в текстовое поле, и приложение должно возвращать выбор изображений, которые соответствуют ключевым словам на основе их заголовка.

У меня уже есть код, который возвращает массив отдельных ключевых слов, введенных пользователем, но каков наилучший способ сделать сравнение. Так что я думаю в соответствии с ...

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

Но это кажется слишком упрощенным, потому что оно не поддерживает только совпадение целых слов. Не говоря уже о специальных символах, пунктуации и т. Д.

Я чувствую, что здесь нужно использовать Regex, но я не эксперт по Regex. Или я должен разбить заголовок на отдельные слова и обработать сравнение слов по одному. Ищите некоторые предложения действительно!

Я пишу на C #, но я думаю, что он не зависит от языка

РЕДАКТИРОВАТЬ. Мне также очень интересно взвешивать результаты, основываясь на количестве подходящих ключевых слов. Но я не пытаюсь воссоздать изображения Google здесь!

Это было полезно?

Решение

Вероятно, лучший способ сделать это - использовать полнотекстовый индекс в поле заголовка в базе данных. Пусть база данных сделает всю работу за вас!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top