Skip to content

🤞📃OLAP database from scratch to check the similarity of visitors to two pages

Notifications You must be signed in to change notification settings

Poehavshi/SimilarityAnalyzer

Repository files navigation

Similarity analyzer

Примитивная аналитическая база данных с REST-API. Реализация запроса /pages основано на предварительном подсчёте всех уникальных значений pages в файле и сохранении списка страниц в отдельный файл unique_pages.csv

Реализация запроса /similarity?page1={page1}&page2={page2}&from={timestamp1}&to={timestamp2} Считает приблизительное значение Jaccard Similarity. Погрешность зависит от выбора параметра timeIntervalInSeconds при создании preprocessingService.

При выборе значения timeIntervalInSeconds = 1 решение будет выдавать точное значение индекса.

Решение основано на нескольких факторах.

  1. Для поиска подходящего под запрос диапазона используется бинарный поиск по заранее сформированному файлу со всеми уникальными значениями timestamp
  2. Далее, зная необходимый диапазон формируется два множества уникальных uid для страниц page1 и page2. Для этого используется заранее сформированный на предобработке файл с множествами для каждого отдельного page и полуинтервала времени
  3. Создаётся пересечение этих двух множеств и подсчитывается длина всех множеств
  4. Считается коэффициент Жакара

Запуск

Для запуска можно использовать IDE IntelliJ IDEA

About

🤞📃OLAP database from scratch to check the similarity of visitors to two pages

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published