{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Silniki wyszukiwarek\n",
    "\n",
    "Obecnie najbardziej popularne są dwa silniki wyszukiwarek: Solr ( https://solr.apache.org/ )  i Elasticsearch ( https://www.elastic.co/ ). \n",
    "\n",
    "Na tych ćwiczeniach omówimy silnik Solr.\n",
    "\n",
    "Jeżeli chcą Państwo wejść w temat wyszukiwarek głębiej niż na zajęciach, polecam dobrą, darmową książkę: https://www.manning.com/books/relevant-search#toc . Opiera się on na Elastisearch, ale nie stanowi to większego problemu.\n",
    "\n",
    "## Schematy budowy aplikacji-wyszukiwarki\n",
    "\n",
    "![](solr1.png)\n",
    "\n",
    "![](solr2.png)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Zadanie na zajęcia\n",
    "\n",
    "Na zajęciach proszę zrobić tutorial https://solr.apache.org/guide/8_8/solr-tutorial.html\n",
    "\n",
    "Proszę szczególnie zwrócić uwagę na schema i na to, w jaki sposób tworzy się nowe pola z istniejących.\n",
    "\n",
    "\n",
    "W razie problemów z limitami ilości otwartych plików na proces:\n",
    "\n",
    "https://www.akitogo.com/blog/raising-limits-on-ubuntu-1604-and-1804-for-solr-7\n",
    "\n",
    "\n",
    "W razię wątpliwości proszę zadawać pytania na zajęciach."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Zadanie domowe (maksymalnie 160 punktów)\n",
    "\n",
    "Proszę stworzyć wyszukiwarkę dla wybranej kolekcji dokumentów (innej niż przykładowe w Solr).\n",
    "\n",
    "## Warunki konieczne do zaliczenia zadania\n",
    " \n",
    " * użycie gotowego silnika wyszukiwarki (np. Solr lub Elasticsearch)\n",
    " * zaindeksowanie co najmniej 40 tys. dokumentów\n",
    " * zaimplementowanie frontendu w postaci aplikacji webowej. Użytkownik nie ma korzystać z panelu admina. Aplikacja webowa może być napisana w dowolnym języku/frameworku.\n",
    " * dokumenty powinny stanowić sensowną, rzeczywistą kolekcję. Proszę nie losować dokumentów, powielać, itp.\n",
    "    \n",
    "## Punktacja\n",
    " * wersja podstawowa: 60 punktów\n",
    " * interesujący (np. niedostępny w Google’u) zbiór dokumentów: +20 punktów\n",
    " * zaawansowane przetwarzanie językowe tekstu: +20 punktów\n",
    " * zaznaczanie słów kluczowych (highlighting): +10 punktów\n",
    " * zaawansowane opcje sortowania: +10 punktów\n",
    " * zaawansowane opcje filtrowania: +10 punktów\n",
    " * zindeksowanie > 0,5 mln dokumentów: +20 punktów, > 5 mln - +40 punktów\n",
    " * wizualizacja (wykres, mapa): +20 punktów\n",
    " * użycie ciekawej funkcji niewymienionej wyżej: +20 punktów\n",
    " * za oddanie do 21.04 - +10 punktów\n",
    " * maksimum do zdobycia z tego zadania: 160 punktów\n",
    "    \n",
    "## Zaliczenie\n",
    " * termin zaliczenia to 21.04 lub 28.04 (na zajęciach)\n",
    " * proszę zaznaczyć w MS TEAMS, że Państwo zrobili zadanie w assigments\n",
    " * zdawanie zadania będzie na zajęciach. Proszę przygotować prezentację do 5 minut"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}