Эта программа (как и прошлая) была написана в качестве тестового задания при отправке резюме, на этот раз в ACS (бывший Корус). Туда меня тоже не взяли, но программа осталась. Вроде вполне рабочая. В качестве базы данных используется MS Access.
Текст задания:
Написать «пооисковик»
Написать приложение позволяющее заводить в программу данные, содержащие текст.
Данные должны храниться в базе данных.
Программа должна позволять просматривать документы, и осуществлять поиск выбранного слова или словосочетания в других документах, сортируя результат по релевантности. Имеется в виду, что сочетание «мама мыла раму» будет соответствовать искомой строке «мама мыла», а так же строке «мама раму», но уже с меньшим коэффициентом релевантности.
Остальные предположения по условиям задачи сделайте сами, но явно опишите их в комментариях к решению. Также в комментарии приведите свои соображения относительно эффективности и корректности вашего решения.
А вот мой комментарий к решению:
Реализованный «пооисковик» осуществляет поиск документов из БД по заданному запросу и обеспечивает сортировку результатов поиска по «релевантности».
Оценка релевантности документа запросу осуществляется по следующей схеме:
- определение расстояний между всеми парами слов в запросе;
- определение расстояний между теми же парами слов в документе;
- определение совпадения расстояний в документе соответствующим расстояниям в запросе, а также определение близости расстояний, для случаев отсутствия полного совпадения.
В реализации «пооисковика» предусмотрена возможность менять алгоритм подсчёта релевантности посредством создания соответствующего класса, реализующего интерфейс IRelevancer.
скачать (72 КБ)
|