Data:Come installare Lucene/Solr per un'app Web B2B?
- 1 di database per client (clienti commerciali)
- 5000 clienti
- I clienti hanno tra i 2 a 2000 utenti (media è ~ 100 utenti/client)
- 100k a 10 milioni di record per database
- Gli utenti devono cercare spesso quei record (è il modo migliore di navigare i loro dati)
informazioni Possibilmente rilevanti:
- Diversi nuovi clienti ogni settimana (in qualsiasi momento durante le ore lavorative)
- server web multiple e server di database (gli utenti possono accedere tramite qualsiasi web server)
- Restiamo agnostica di lingua o SQL marca, dal momento che Lucene (e Solr) hanno una larghezza di supporto
Per esempio:
Joel Spolsky ha dichiarato in Podcast #11 che il suo prodotto di app Web ospitato, FogBugz On-Demand, utilizza Lucene. Ha migliaia di clienti on-demand. E ogni cliente ottiene il proprio database.
Utilizzano uno index per client and store it in the client's database. Non sono sicuro dei dettagli. E non sono sicuro che questa sia una mod seria per Lucene.
la domanda:
Come ti configurazione di ricerca Lucene in modo che ogni cliente può cercare solo all'interno del suo database?
Come impostare gli indici?
Dove memorizzi gli indici?
Dovresti aggiungere un filtro a tutte le query di ricerca?
Se un cliente ha annullato, come cancellereste il loro (parte dell'indice)? (Questo può essere banale - non ancora sicuro)
Possibili soluzioni:
fare un indice per ogni client (database)
- Pro: la ricerca è più veloce (oltre un index metodo globale). Gli indici sono relativi alla dimensione dei dati del cliente.
- Contro: Non sono sicuro di ciò che questo comporta, né so se questo va oltre lo scopo di Lucene.
Avere un unico indice gigantesco con un campo database_name. Includere sempre database_name come filtro.
- Pro: Non sono sicuro. Forse buono per supporto tecnico o fatturazione per cercare tutti i database per informazioni.
- Con: La ricerca è più lenta (rispetto al metodo index-per-client). Sicurezza difettosa se il filtro di query viene rimosso.
Un'ultima cosa:
Vorrei anche accettare una risposta che utilizza Solr (l'estensione di Lucene). Forse è più adatto a questo problema. Non sono sicuro.
Jude, apprezzo la tua risposta, i tuoi sforzi, e semplicemente che hai dedicato del tempo al tuo intenso programma per questo. Terrò in considerazione il tuo consiglio, insieme a Shalin e @Mikos. Grazie mille. –
A tutti-- Ho accettato la risposta di @ Blinky perché è stato lì, fatto - con quasi lo stesso identico scenario che ho di fronte. @Mikos e Shalin hanno offerto anche ottimi suggerimenti. E considererò tutti i loro ottimi consigli quando implementate la ricerca sulla mia app web. –