2009-09-09 19 views
52

Abbiamo bisogno di integrare un motore di ricerca nel nostro software di gestione del catalogo prodotti. il catalogo dovrebbe avere più di 4-5 milioni. registri con dati relazionali distribuiti su più tabelle. La nostra piattaforma di sviluppo è Asp.Net 3.5 e abbiamo svolto alcuni lavori pre-liminari su Lucene, ritenendolo buono. Tuttavia, siamo appena venuti a conoscenza di Solr e stavamo cercando alcuni suggerimenti pratici per confrontare Lucene & Solr da implementazione, timeline, manutenzione regolare, prestazioni, prospettiva delle funzionalità. Qualsiasi guida o suggerimento sarebbe davvero utile. Grazie.Motore di ricerca - Lucene o Solr

risposta

41

Lucene:

Apache Lucene è un alto rendimento, biblioteca motore di ricerca a testo completo scritto interamente in Java. Si tratta di una tecnologia adatta a quasi tutte le applicazioni che richiedono la ricerca full-text

Solr:

Solr è un server di ricerca aziendale open source basato sulla libreria di ricerca Lucene Java, con XML/HTTP e API JSON, ha colpito mettendo in evidenza, ricerca sfaccettata, il caching, la replica, un'interfaccia di amministrazione web e ...

in sostanza, Lucene è incorporato nel Solr ed è puramente una biblioteca di ricerca full-text, con lo scopo di essere incorporato in progetti che danno loro un testo completo capacità di ricerca. Solr ha molte più funzionalità e capacità di amministrazione, permettendo di cercare dati strutturati senza dover scrivere codice personalizzato, caricare dati da file CSV, tollerare l'analisi dell'input dell'utente, ricerca sfaccettata, evidenziare il testo abbinato nei risultati e recuperare i risultati di ricerca in una varietà di formati (XML, JSON, ...). Controlla Solr features page e verifica se alcune funzionalità sono rilevanti per il tuo progetto.

+0

Ho creato i miei indici utilizzando Lucene. questi indici possono ancora essere utilizzati da Solr per le query di ricerca? – Vikram

+1

Come nella maggior parte dei casi, dipende. Non è automatico, devi essere sicuro che solr ha gli stessi campi che mappano quelli degli indici di Lucene. Per ulteriori informazioni, consultare: http://www.nabble.com/Using-Lucene-index-in-Solr-td4983079.html – dcruz

+0

@dcruz, per caso avete qualche esperienza con DataImportHandler in Solr che può importare automaticamente il dati dal database basato su alcuni file di configurazione. Funziona così liscio come sembra o ci sono dei trucchi nascosti? – Vikram

1

Siamo esattamente nella stessa situazione. Sfortunatamente non sono stato coinvolto direttamente nel processo di valutazione, ma alla fine utilizzeremo Solr integrato con Lucene.

Il principale vantaggio è la varietà di formati descritti da dcruz. Quindi puoi interrogare il tuo Solr-Consumer e recuperare i risultati della ricerca come dati XML che possono essere facilmente analizzati e visualizzati sulla pagina web.

6

Come dice dcruz, Solr usa comunque Lucene, quindi non è un confronto valido.

Lucene è un toolkit per la creazione di app di ricerca, Solr è un'app di ricerca creata con Lucene.

IMO si sarebbe folle non da utilizzare Solr, in quanto fornisce un sacco di 'idraulico' che dovreste per scrivere altrimenti - come un configurabile Importazione dati Handler a succhiare i dati di i tuoi archivi RDBMS o XML.

Inoltre, ti dà un'interfaccia di amministrazione web e altri campanelli e fischietti.

+0

ho usato entrambi (in asp.net), solr cioè facile da configurare e mantenere, usare lucene.net richiede uno sforzo più intenso, d'altra parte, se hai bisogno di qualcosa che solr non offre fuori dalla scatola (se non lo sai java). – robasta

18

Sono d'accordo con Andrew Clegg. Penso che quando molti tipi di Java Developer guardano Lucene vs Solr, Lucene sembra più amichevole perché è solo una libreria (POJJ: Plain Old Java Jar!), Come qualsiasi altra libreria e sembra semplice da incorporare, contro la complessità di in piedi Solr up come un processo separato che comunica su HTTP complesso.

Tuttavia, penso che per quasi tutti i casi di utilizzo della ricerca, Solr sia l'approccio giusto.Poiché la maggior parte della complessità nella ricerca non è l'integrazione iniziale diretta, ma nelle aree confuse delle ricerche di sintonizzazione, il ridimensionamento per soddisfare la domanda e il mantenimento degli indici che passano dal mondo degli sviluppatori al mondo dei sistemi. E Solr risponde a tutte queste esigenze.

+0

ha appena ordinato il tuo libro - Solr 1.4 Enterprise Search – Vikram

+0

Felice di sentirlo! Fammi sapere come ti piace! –

+0

@Eric, nel frattempo, puoi farmi un qualche tipo di cheat sheet per DataImportHandler che può essere configurato per importare i dati da un database del server SQL. – Vikram

1

Permettetemi di spostare un po 'la vostra attenzione: siete pronti a cambiare l'architettura del vostro prodotto? Sia Lucene che Solr sono implementati in Java. Quindi finirai per eseguire ancora un altro web-container per l'hosting (e quindi perderà la purezza della piattaforma, per così dire). Mentre Lucene è stato portato su .NET (Lucene.NET project), Solr non era il più lontano possibile. Se ti capita di utilizzare SQL Server (che è probabile, considerando la tua piattaforma), potresti considerare la ricerca full-text di SQL Server invece - ha quasi le stesse funzionalità (non così ricca di funzionalità come Lucene/Solr, ma comunque) e di solito (nella maggior parte dei casi) è molto più semplice da integrare nell'applicazione esistente. Inoltre, puoi beneficiare di una manutenzione semplificata (viene fornita insieme al tuo database) e di rimanere all'interno di un'unica piattaforma.

+6

SQL Server FTS è * way * dietro Lucene e Solr –

+2

Non stavo dicendo che è alla pari. Tuttavia, l'utilizzo di SQL Server FTS ti consentirà di fornire la soluzione più velocemente/più facilmente e resterai nei limiti della piattaforma. Qualche tempo fa ci trovammo di fronte alla stessa scelta: restare con SQL Server FTS o iniziare a usare Solr. Abbiamo finito con Solr ed è per questo che posso confrontare entrambe le funzionalità e lo sforzo richiesto per farle entrare nella tua app. Ma ognuno fa la sua stessa decisione comunque. – AlexS

+0

@Alex, hai utilizzato DataImportHandler per configurare l'importazione dei dati in Solr dal server SQL? – Vikram

2

Una cosa da considerare è la difficoltà di configurazione dell'applicazione quando si mescolano questi due ambienti (Java/.NET). Se si utilizzano le librerie Lucene.NET, è possibile limitare le installazioni di dipendenza esterne richieste, semplificando la distribuzione.

Un'altra cosa da considerare è necessario gli extra che Solr offre? Un'interfaccia di amministrazione del web (nother) probabilmente è grandiosa, ma estende la tua copertura di rischio. L'installazione di Java e di un altro servizio significa maggiore gestione delle patch. Se segui .NET, solo la tua strategia di patch può essere il modello di aggiornamento standard di Windows.

Ovviamente il rollover dell'implementazione utilizzando Lucene.NET avrà i suoi costi di sviluppo e manutenzione, ma secondo la mia esperienza è stato semplice e facile da utilizzare.