Costruire un motore di ricerca non è semplice. Vedremo in questa serie di articoli come progettare e realizzare un motore di ricerca (1a parte).
Le considerazioni da fare lato codice sono molte, in fatti avremo bisogno dei seguenti elementi:
- Parser (analizzare e decriptare il testo da cercare).
- Costruzione degli indici (costruire l’indice per il testo analizzato).
- Compilatore delle query (analizzare e compilare query).
Indice
Query e Valutazione dei risultati
Ottimizzare le Query (aumentare e ottimizzare la query per una migliore qualità della ricerca e della velocità). Gestione dei risultati (valutazione dei documenti che non hanno termini di ricerca). Valutazione dei risultati (rango abbinato ai documenti in base alla loro rilevanza per la query) e generatore dei risultati di ricerca. Ogni componente può essere suddiviso a diversi sotto-componenti. Ad esempio, la costruzione degli indici comporta sofisticati algoritmi per comprimere, decomprimere, unire, gli indici. Vi proponiamo alcuni motori di ricerca open-source da esaminare:
- Open Source Search Server: http://sphinxsearch.com/
- Apache Lucene: http://lucene.apache.org/
Un altro tema, che vedremo, è la scelta della base dati e come salvare e gestire il contenuto di miliardi di pagine web.
Il data base: la tecnologia
Iniziamo dal salvataggio dei dati che insieme all’algoritmo di ricerca e gestione degli errori costituisce uno dei due punti fondamentali per la realizzazione di un motore di ricerca. Il motore di ricerca più famoso utilizza un database NoSQL (Not only SQL utilizzato per le basi dati non relazionali) chiamato BigTable. Esso funziona su un sistema hardware distribuito capace di gestire miliardi di informazioni. Il file system distribuito hadoop (HDFS) è il sistema di storage primario utilizzato dalle applicazioni Hadoop. HDFS è un file system distribuito che fornisce l’accesso ad alte prestazioni ai dati attraverso i cluster Hadoop. Come altre tecnologie Hadoop, HDFS è diventato uno strumento chiave per la gestione di grosse quantità di dati.
Hadoop
Hadoop è una raccolta di vari bigdata componenti / software / strumenti, tra cui HDFS che è ampiamente considerato come il miglior file system distribuito disponibile.
La matrice di Hadoop è Apache, il linguaggio di programmazione è Java, il plus del framework è che supporta applicazioni distribuite con elevato accesso ai dati con licenza open source. Il principale componente è HadoopCommon, che fornisce accesso al file system supportato da Hadoop. L’HadoopCommon package contiene i file jar e gli script necessari per avviarlo. Il package fornisce inoltre il codice sorgente, la documentazione e una sezione contributi che include i progetti della comunità. Per capire meglio la sua struttura, va visualizzato come un insieme di data nodi che, raccolti in cluster formano un HDFS, ovvero un HadoopDistributed File System. La domanda che alcuni analisti si stanno ponendo è se sia possibile eseguire AnalisiHadoop senza usare l’HDFS.
http://hadoop.apache.org/
HBase
HBase è un database che funziona con il sistema NoSQL, che può funzionare per memorizzare petabyte (un biliardo di byte) di dati. Anche se basato su Java e considerato come un database affidabile. Hadoop è gestito da Apache
http: //hbase.apache.org/
Hypertable
Hypertable è un altro database NoSQL che funziona su Hadoop. Funziona sulla base di C ++ e la società Hypertable sostiene che le prestazioni sono molto più veloci rispetto a HBase. Il supporto Hypertable è molto buono e ha una maggiore flessibilità sulle query di confronto con HBase.
http: //hypertable.com/
Così, per costruire un motore di ricerca si deve utilizzare uno dei sistemi di memorizzazione dei dati da scegliere tra Hadoop, HBase o Hadoop Hypertable.
Abbiamo visto in questa 1a parte come progettare e realizzare un motore di ricerca, questo articolo prosegue con la Seconda Parte: Il Crawler
