Deduplikacja

Z Wiki - coigdzie.pl
Wersja z dnia 09:24, 14 gru 2017 autorstwa Tomek (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Jest to mechanizm wyszukiwania w bazie konfliktów między wydarzeniami (oprócz projekcji filmowych). W szczególności dotyczy to imprez wstawianych przez automaty oraz konfliktów między różnymi typami wydarzeń. Deduplikacja jest procesem dwuetapowym:

  1. automatyczne wyszukiwanie potencjalnych duplikatów,
  2. weryfikacja duplikatów
    • automatyczna,
    • manualna (nazywana często rozwiązywaniem konfliktów).

Deduplikacja uruchamiana dwa razy dziennie o 2:15 oraz 18:15.

Klasy

Wydarzenia które zostaną uznane za duplikaty są grupowane za pomocą obiektu "konflikt" (ConflictData). Konflikt posiada licznik uczestników konfliktu, datę startu wydarzenia (jest to data startu najwcześniejszego wydarzenia będącego uczestnikiem konfliktu), informację czy konflikt jest zweryfikowany oraz miejscowość w której odbywają się wydarzenia. Na uczestnika konfliktu (ConflictParticipantData) składa się konflikt, napis zawierający przyczyny zaliczenia wydarzenia do konfliktu, opis typu wydarzenia oraz samo wydarzenie.

Wyszukiwanie potencjalnych duplikatów

Na początku procesu wyciągamy z bazy listę miejscowości w których odbywa się więcej niż jedno przyszłe wydarzenie. W kolejnym korku pobierani są wszyscy uczestnicy konfliktów dla których data startu jest w przyszłości.

Następnie iterując się po miejscowościach wyciągamy wydarzenia z danej miejscowości, które były wstawione albo zmodyfikowane w ciągu ostatnich X dni (Parametr liczby X dni jest zapisany w ustawieniach pod kluczem DEDUPLICATION_DAY_DIFFERENCE) oraz listę uczestników konfliktów z danej miejscowości.

W kolejnym kroku porównujemy ze sobą wydarzenia z obu list, aby wydarzenia mogło uczestniczyć w deduplikacji musi być nie usunięte albo już należeć do jakiegoś konfliktu. W procesie porównujemy:

  • nachodzenie na siebie dat trwania
  • różnice w długości wydarzenia
  • czy odbywają się w jednej lokalizacji
  • różnica w czasie startu w minutach
  • użytkowników wstawiających
  • odległość geometryczną lokalizacji
  • odległość nazw liczoną metodą LCS oraz Olivier
  • podobieństwo kategorii

Następnie na podstawie porównań obliczamy punkty i jeśli para otrzyma więcej niż 3200 pt to tworzymy konflikt. Parametry do obliczania punktów z poszczególne cechy oraz wartość progowa są kontrolowane przez ustawienia.

Wydarzenie dodawane do konfliktu, wstawione do bazy później niż data poprzedniej deduplikacji zostanie usunięte wcześniej wstawionych wydarzeń nie usuwamy ze względu na fakt że mogły już zostać wyeksportowane.

Automatyczna weryfikacja

Na zakończenie deduplikacji próbujemy automatycznie rozwiązać część konfliktów. W tym celu wyciągamy z bazy listę niezweryfikowanych konfliktów i sprawdzamy czy nadają się to automatycznego rozwiązania.

Aby konflikt nadawał się do automatycznego rozwiązania wydarzenia powiązane z uczestnikami konfliktu muszą spełniać następujące warunki:

  • muszą odbywać się w tej samej lokalizacji
  • muszą zaczynać się w tym samym momencie
  • muszą być wstawione przez różnych użytkowników
  • muszą być usunięte

Jeśli te warunki są spełnione to konflikt jest weryfikowany a wydarzenie o najwyższej jakości jest przywracane. Jakość wydarzenia zależy od:

  • czy jest uzupełniony organizator
  • czy wydarzenie jest polecane
  • czy posiada opis oraz obrazek
  • czy wydarzenie nie jest Imprezą

Manualna weryfikacja (rozwiązywanie konfliktów)

Ogólna zasada: zostawiamy rekordy, które do bazy zostały dodane wcześniej.

1. Jeśli obydwa rekordy w konflikcie są usunięte, to dla par:

  • impreza-impreza przywracamy rekord dodany przez EH lub lepszej jakości;
  • impreza-koncert przywracamy koncert;
  • impreza-pokaz teatralny przywracamy pokaz teatralny.

2. W pozostałych przypadkach:

  • Koncerty powinny być w koncertach. Usuwamy więc imprezę i przywracamy koncert, nawet jeśli impreza była dodana wcześniej.
  • Festiwale muzyczne wstawiamy tylko w koncertach po jednym rekordzie na dzień. Jeśli zdublowały się koncerty z imprezami, to przywracamy koncerty, imprezy usuwamy. Na koniec trzeba odnaleźć i usunąć imprezę grupującą.
  • Pokazy teatralne powinny być w repertuarze teatrów. Usuwamy więc imprezę i przywracamy repertoire'a, nawet jeśli impreza była dodana wcześniej.
  • Festiwale teatralne mamy w dwóch feedach - w imprezach po jednym rekordzie na dzień, w repertuarze teatrów po jednym rekordzie na pokaz. Oznacza to, że jeśli zdublował się pokaz teatralny z imprezą będącą dniem festiwalowym, to przywracamy obydwa rekordy.