Проект #1

Поисковый движок

JS: Алгоритмы и структуры данных

Освойте ключевые методы поиска, метрики релевантности, постройте обратный индекс

2-4
недели

Цель

Поисковый движок — проект, в котором мы изучим основные алгоритмы и структуры данных в поисковых системах. На практике применим различные методы поиска, индексирование, ранжирование, метрики релевантности, построим обратный индекс.

Архитектура

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

Описание

Всемирную сеть сложно представить без поисковиков. На большинстве сайтов так же есть встроенный поисковик. Все они используют под собой самые разные поисковые движки. В этом проекте мы напишем собственную реализацию поискового движка. Распространённая поисковая система с открытым исходным кодом — ElasticSearch.

Пример использования:

import buildSearchEngine from '@hexlet-code';

const doc1 = { id: 'doc1', text: "I can't shoot straight unless I've had a pint!" };
const doc2 = { id: 'doc2', text: "Don't shoot shoot shoot that thing at me." };
const doc3 = { id: 'doc3', text: "I'm your shooter." };
const docs = [doc1, doc2, doc3];

const searchEngine = buildSearchEngine(docs);

searchEngine.search('shoot'); // ['doc1', 'doc2']
Сколько стоят проекты?

Проекты входят в стоимость обучения в любом формате: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

Зачем проходить проекты?

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

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.

Кто проверяет проекты?

Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.