Bene, la cosa migliore che puoi fare è eseguire i tuoi benchmark!
Confronta la velocità media su diverse migliaia di query di test su un indice che include ngrams rispetto a uno che li esclude. Non deve essere il tuo indice reale completo (poiché potrebbe richiedere molto tempo per essere generato), solo una dimensione del campione sufficiente per farsi un'idea.
Tieni presente che puoi utilizzare debugQuery = on per analizzare come una query viene eseguito e forse per generare un indice migliore. Ad esempio, vedi Libreria Digitla di Hathi Trust Ottimizzazione delle prestazioni di ricerca . Utilizzando CommonGrams
e analizzando le query, sono stati in grado di ridurre il tempo medio di interrogazione del 50%.
Quindi, è meglio gestire i propri benchmark, ma ci sono anche alcuni benchmark esistenti online. Per esempio vedi Sakai Solr Benchmark , che confronta, tra le altre cose, le prestazioni della query usando un indice con ngrams e uno senza . Se i dettagli sono abbastanza simili al tuo caso d'uso, questo benchmark dovrebbe darti un'idea approssimativa di come andrà a finire per te. Per riassumere questo punto di riferimento:
- Utilizzo di documenti di circa 2000 parole di lunghezza e composti da parole inglesi casuali a frequenza simile a quella inglese. Totale corpus circa 6 GB.
- Limitazione degli n-grammi indicizzati a 3, 4 e 5 grammi (anche con un test che indicizza il bordo di ancoraggio sinistro n-grammi fino alla lunghezza 15).
- Esecuzione di benchmark sotto carico di 5 utenti concorrenti.
- Utilizzo di hardware medio-secondario del server.
Risultati (in media tempo di interrogazione):
- Senza n-grammi: 159 ms
- Con 3, 4 e 5 grammi: 393 ms
- Con 3, 4 e 5 grammi e bordo con ancoraggio a sinistra fino a 15 grammi: 450 ms
(Hanno anche altri risultati tra cui quelli che chiamano indici "snelli").
Il takeaway: se i tuoi dati sono abbastanza simili ai loro, l'aggiunta di n-gram all'indice può aumentare il tempo di interrogazione di un fattore da 2,5 a 3. Naturalmente, devi prendere questi risultati con un pizzico di sale, perché ci sono così tanti fattori specifici per i tuoi dati. Questo è il modo migliore di utilizzarlo non come un dato di fatto, ma come una linea guida su cosa aspettarsi quando esegui i tuoi benchmark .