From 70602ee3b28c0203c0bfce10f6fc0b35300a3143 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 17 Nov 2020 19:08:29 +0100 Subject: [PATCH] Create indexing --- src/routes/BasiDiDati.js | 14 --- .../GestioneDellInformazione/08_Indexing.js | 92 +++++++++++++++++++ src/routes/GestioneDellInformazione/index.js | 2 + 3 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 src/routes/GestioneDellInformazione/08_Indexing.js diff --git a/src/routes/BasiDiDati.js b/src/routes/BasiDiDati.js index f04a7fa..8df5bce 100644 --- a/src/routes/BasiDiDati.js +++ b/src/routes/BasiDiDati.js @@ -29,13 +29,6 @@ export default function (props) { - -
    -
  1. -
  2. -
  3. -
-
@@ -47,13 +40,6 @@ export default function (props) { Va consegnato via mail almeno 10 giorni prima dello scritto.

- -
    -
  1. -
  2. -
  3. -
-
diff --git a/src/routes/GestioneDellInformazione/08_Indexing.js b/src/routes/GestioneDellInformazione/08_Indexing.js new file mode 100644 index 0000000..8aab1c6 --- /dev/null +++ b/src/routes/GestioneDellInformazione/08_Indexing.js @@ -0,0 +1,92 @@ +import {Fragment} from "preact"; +import {Section, Panel, ILatex, BLatex, PLatex, Code, BaseLink} from "bluelib"; +import Example from "../../components/Example"; +import Link from "../../components/Link"; + +const r = String.raw; + + +export default function () { + return ( + +
+ +

+ Una struttura dati che permette di velocizzare le ricerche su testi grandi e semi-statici. +

+ +

+ Si crea un vocabolario dall'insieme dei token, e ad ogni token del vocabolario si associa una lista di tutte le sue occorrenze (posting list). +

+

+ L'efficacia ed efficienza dell'indice dipendono dalle strutture di indicizzazione utilizzate per serializzarlo. +

+
+
+
+ +

+ Struttura per rappresentare il vocabolario basata su un array di puntatori alle posting list. +

+ {r` + ciao → R1, R15, R123 + steffo → R1, R14 + ciano → R1231 + `} +
+ +

+ Struttura per rappresentare il vocabolario basata su un albero dei prefissi dei token,: +

+
    +
  • ogni arco corrisponde a una lettera del prefisso;
  • +
  • ogni foglia corrisponde a un token e contiene un puntatore alla sua posting list.
  • +
+ {r` + - [root] + - c + - i + - a + - o + - R1 + - R15 + - R123 + - no + - R1231 + - steffo + - R1 + - R14 + `} +
+ +

+ Struttura per rappresentare il vocabolario che occupa più spazio di un albero ma permette di effettuare certe operazioni più velocemente. +

+ + Visualizzazione di un B+ tree + + + L'abbiamo fatta in Basi di dati! + +
+
+
+ +
    +
  1. Vocabulary search: si cercano individualmente i termini della query nel vocabolario
  2. +
  3. Occurences retrieval: si raccolgono le posting list dei vari termini
  4. +
  5. Occurences manipulation: si manipolano i dati delle posting list in modo da risolvere le query, restituendo quindi un sottoinsieme delle occorrenze
  6. +
+

+ In base alla struttura utilizzata, potrebbe non essere sempre possibile effettuare il terzo passo. +

+ + Non è possibile cercare prefissi se è stato utilizzato l'hashing! + +
+
+
+ ) +} diff --git a/src/routes/GestioneDellInformazione/index.js b/src/routes/GestioneDellInformazione/index.js index 45a790b..36cea42 100644 --- a/src/routes/GestioneDellInformazione/index.js +++ b/src/routes/GestioneDellInformazione/index.js @@ -6,6 +6,7 @@ import DocumentProcessing from "./04_DocumentProcessing"; import Thesaurus from "./05_Thesaurus"; import InformationContent from "./06_InformationContent"; import AnalisiLessicale from "./07_AnalisiLessicale"; +import Indexing from "./08_Indexing"; export default function () { @@ -20,6 +21,7 @@ export default function () { + ) }