2012-05-30 12 views
16

In questo articolo mi ha offerto una grande quantità di informazioni:
Implement Lucene on Existing .NET/SQL Server stack with multiple webserversImplementare Lucene su Stack .NET/SQL Server esistente con più server Web - memorizzare gli indici nel database?

vorrei riallacciarmi a questo chiedendo circa la nozione di attuazione di una directory Lucene che persistono gli indici al database (nel mio caso SQL Server) - se qualcuno ha uno SWAG sullo sforzo che sarebbe utile.

Posso vedere che il regno Java ha questo (ad esempio, Bussola), e spero davvero che la gente di StackOverflow possa averlo considerato? Qualsiasi feedback sarebbe apprezzato.

Il mio pensiero da principiante è che gli indici persistenti del DB sarebbero un modo per risolvere il problema della "distribuzione". Quindi, invece di implementare la messaggistica (non possibile per il mio software a causa delle restrizioni di implementazione), o la pianificazione (sarebbe okay - le persone del prodotto si preoccupano sempre di prendere decisioni su come devono essere i dati indicizzati 'correnti'), l'IndexReader riapre () aggiornerebbe in modo efficiente l'istantanea dell'indice su qualsiasi nodo del server.

Funziona se DB concurrency/load non è il cuore del problema da risolvere? - il nostro uso è incentrato sulla facilitazione della diversa analisi dei dati su campi che a sua volta facilita diverse forme di abbinamento.

Le nostre architetture/restrizioni di implementazione non ci consentono di insistere su server dedicati come SOLR, quindi questa nozione di distribuzione è stata da noi scontata.

+0

Questo non risponde alla domanda direttamente, ma sembra che qualcuno abbia implementato una directory del server sql su Java (usando JDBC). Forse puoi guardare il codice sorgente per stimare quanto tempo ci vorrebbe per scrivere. Oppure, puoi usare solr come suggerisce questo articolo: http://www.chrisumbel.com/article/lucene_solr_sql_server –

+0

Quale sarebbe il vantaggio di utilizzare Lucene.NET allora? Perché non usi semplicemente SQL Server FullText? –

risposta

0

Quante variazioni di indice attendi? Quando vuoi leggere nell'indice? (All'avvio dell'applicazione?) Inserire l'indice nel database e "scaricarlo" sulla creazione dell'indice potrebbe consumare troppe risorse.

Non sono sicuro delle limitazioni di implementazione, ma è possibile disporre di uno spazio file condiviso per le macchine (ad esempio condivisione SMB/NFS o simile o anche una soluzione basata su SAN)?

0

Avrei un po 'paura dei problemi di prestazioni con gli indici nel db. Dai un'occhiata a Elasticsearch. È il successore della bussola. Richiede Java, ma ha un'interfaccia REST molto pulita per la tua soluzione .NET. Elasticsearch supporta la distribuzione e la replica tra diversi nodi. È possibile eseguirlo sui nodi del server Web.

0

Questa soluzione interromperà le prestazioni dell'indice, poiché deve recuperarlo dal DB. Consiglio vivamente passare a una nuova/alternativa migliore, cioè Solr (usando Solr.NET per esempio) o elasticsearch (usando NEST)

Solr è un alto livello di interfaccia/gestore per gli indici Lucene, con una configurazione semplificata, il clustering , replica, ecc. risolti per te. La cosa bella è che se hai qualche exp. con Lucene, questo non sarà un passo così grande

ElasticSearch è un approccio diverso ma non è difficile da imparare.

Problemi correlati