Sì, l'ho usato esattamente per quello che stai descrivendo. Avevamo due servizi: uno per la lettura e uno per la scrittura, ma solo perché avevamo più lettori. Sono sicuro che avremmo potuto farlo con un solo servizio (lo scrittore) e incorporato il lettore nell'app e nei servizi web.
Ho usato lucene.net come indicizzatore di database generale, quindi quello che ho recuperato era fondamentalmente DB id (a messaggi di posta elettronica indicizzati) e l'ho usato anche per recuperare informazioni sufficienti per popolare i risultati di ricerca o tale senza toccare il database. Ha funzionato benissimo in entrambi i casi, anche se l'SQL può essere un po 'lento, dato che è necessario avere un ID, selezionare un ID, ecc. Abbiamo risolto questo problema creando una tabella temporanea (con solo la riga ID in essa contenuta) e inserimento di massa da un file (che era l'output di lucene) per poi unirsi alla tabella dei messaggi. È stato molto più veloce.
Lucene non è perfetto, e devi pensare un po 'al di fuori del box di database relazionale, perché in realtà non lo è, ma è molto molto bravo in quello che fa. Vale la pena dare un'occhiata, e, mi è stato detto, non ha il "oops, mi dispiace, è necessario ricostruire nuovamente il tuo indice" problemi che fa FTI di MS SQL.
BTW, avevamo a che fare con 20-50 milioni di email (e circa 1 milione di allegati unici), per un totale di circa 20 GB di indice di lucene credo e 250 + GB di database SQL + allegati.
Le prestazioni sono state fantastiche, per non dire altro - assicuratevi solo di pensare e modificare i vostri fattori di fusione (quando unisce i segmenti dell'indice). Non vi è alcun problema nell'avere più di un segmento, ma ci può essere un GRANDE problema se si tenta di unire due segmenti che contengono 1 milione di elementi ciascuno, e si ha un thread watcher che uccide il processo se ci vuole troppo tempo ... .. (sì, quello ci ha preso a calci in culo per un po '). Quindi mantieni il numero massimo di documenti per thinggie LOW (cioè, non impostarlo su maxint come abbiamo fatto!)
EDIT Corey Trager ha documentato come utilizzare Lucene.NET in BugTracker.NET here.
fonte
2008-08-31 22:11:33
Ho anche aggiunto il supporto per l'indicizzazione di testo completo alla libreria Simple Savant per Amazon SimpleDB utilizzando Lucene.NET. L'architettura è descritta qui: http://simplesavant.codeplex.com/wikipage?title=Full-Text%20Indexing&referringTitle=Documentation –