Упорядочить текстовые файлы по названию, а затем по телу
У меня есть класс с именем TextFile
с Title
а также Body
которые обе строки.
В моем приложении я хочу, чтобы конечный пользователь мог выполнять поиск по этим файлам.
Я хочу создать свой алгоритм, чтобы сначала упорядочивались файлы с поисковым термином в заголовке, а затем файлы с поисковым термином в теле.
Пример поиска: "Фермер"
Файл 1:
Название: "Фермеры в Европе"
Тело: содержит "Фермер" 50 раз
Файл 2:
Название: "Овощная земля"
Тело: содержит "Фермер" 10 раз
Файл 3:
Название: "Фермеры в мире"
Тело: содержит "Фермер" 10 раз
Результат будет (упорядочен по убыванию суммы):
- Файл 1
- Файл 3
- Файл 2
Мой вопрос: как мне начать упорядочивать, когда файлы имеют поисковый запрос в названии точное количество раз (см. Файл 1 и файл 3)?
Как бы я упорядочил сначала по названию, а затем по количеству вхождений в теле?
1 ответ
Просто напишите метод, как int performSearch(string searchFor, TextFile file)
,
Внутри метода вы ищете в полях.
Для подсчета совпадений используйте RegEx
или посмотрите здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/how-to-count-occurrences-of-a-word-in-a-string-linq
Просто сложите счет и вернитесь. Вы также можете определить некоторые веса.
Как пример: return (10 * countTitle) + (countBody);
Теперь вы можете отсортировать это так: textFileList.OrderBy(file => performSearch(searchValue, file))
и вы получите упорядоченный список ваших файлов.