5. Поиск по базе книг
Цель
Реализовать индексацию и поиск по данным books.csv. В качестве документов можно использовать только названия книг.
Руководство
Если вы используете библиотеку CLI11, то можете реализовать одну консольную утилиту с командами:
fts index --csv <path> --index <path>
fts search --index <path> [--query <query_text>]
Библиотека cxxopts не поддерживает синтаксиса команд, поэтому можно реализовать две отдельные утилиты:
indexer --csv <path> --index <path>
searcher --index <path> [--query <query_text>]
Поисковик при запуске без параметра --query переходит в интерактивный режим
и ожидает ввод запроса. Для реализации такого режима можете воспользоваться
библиотекой AmokHuginnsson/replxx.
CSV-файл можно парсить вручную или выбрать одну из существующих библиотек:
Скорее всего, вы заметите, что поисковая выдача содержит множество нерелевантных результатов. Предложите и реализуйте механизм отсечения мусора.
Дополнительно
Предложите способ реализации поиска по нескольким полям: заголовку и автору. Какие компоненты поисковой системы затронет такое изменение?
Насколько хорошо ваш парсер справляется с нормализацией слов? Какие вы можете найти слабые места? Выполните необходимые доработки.
Предложите способ реализации поиска по ISBN и ISBN13. Чем он отличается от поиска по текстовым полям?
Ручное тестирование качества поиска — крайне трудоемкая задача. Сгенерируйте корпус запросов и предложите критерии для оценки качества поиска. Для автоматизации интеграционного тестирования может буть удобно использовать более высокоуровневый язык программирования.