Esiste una serie di best practice per la creazione di un indice Lucene da un DB relazionale?

StackOverflow https://stackoverflow.com/questions/296365

  •  08-07-2019
  •  | 
  •  

Domanda

Sto esaminando l'uso di Lucene e / o Solr per fornire la ricerca in un'applicazione Web basata su RDBMS. Sfortunatamente per me, tutta la documentazione che ho scremato riguarda come estrarre i dati dall'indice; Sono più interessato a come costruire un indice utile. Ci sono delle "migliori pratiche" per fare questo?

È stato utile?

Soluzione

Stiamo lanciando la nostra prima applicazione che utilizza Solr stasera. Con Solr 1.3, hanno incluso DataImportHandler che consente di specificare le tabelle del database (le chiamano entità) insieme alle loro relazioni. Una volta definita, una semplice richiesta HTTP eseguirà un'importazione dei tuoi dati.

Dai un'occhiata a la pagina wiki Solr per DataImportHandler per i dettagli.

Altri suggerimenti

Più applicazioni scriveranno nel database? Se è così, è un po 'complicato; devi avere un meccanismo per identificare nuovi record da alimentare all'indicizzatore Lucene.

Un altro punto da considerare è se desideri un indice che copra tutte le tue tabelle o un indice per tabella. In generale, consiglio un indice, con un campo in quell'indice per indicare da quale tabella proviene il record.

Hibernate ha il supporto per la ricerca full text, se tu desidera cercare oggetti persistenti anziché documenti non strutturati.

Esiste un progetto OpenSymphony chiamato Bussola di cui dovresti essere a conoscenza. Mi sono tenuto lontano da me stesso, principalmente perché sembra essere modo più complicato di quanto la ricerca debba essere. Inoltre, come posso dire dalla documentazione (confesso di non aver trovato il tempo necessario per leggerlo tutto), memorizza i segmenti Lucene come BLOB nel database. Se hai familiarità con l'architettura Lucene, Compass implementa una directory Lucene in cima al database. Penso che questo sia l'approccio sbagliato. Vorrei invece sfruttare il supporto integrato del database per l'indicizzazione e implementare un Lucene IndexReader. La stessa critica si applica alle implementazioni della cache distribuita, ecc.

Non l'ho esplorato affatto, ma dai un'occhiata a LuSql .

L'uso di Solr sarebbe altrettanto semplice, ma ci saranno alcuni DRY - violazioni con Solr schema.xml e il tuo attuale schema di database. (Cordiali saluti, Solr supporta però i caratteri jolly.)

Come introduzione:

Brian McCallister ha scritto un bel post sul blog: Uso di Lucene con OJB .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top