2012-02-20 17 views
5

Ho un numero di documenti indicizzati da Solr 3.5, che contengono campi data (solr.DateField), tra gli altri. Ora faccio richiesta al componente Solr che dovrebbe restituire alcun risultato:Divisione per errore zero di Solr StatsComponent per il campo data in caso di nessun risultato

http://example.com/solr/select?fq=sis_field_int:1000& 
stats=true&stats.field=ds_field_date 

e ottenere errore

HTTP Status 500 -/by zero java.lang.ArithmeticException:/by zero at 
org.apache.solr.handler.component.DateStatsValues.addTypeSpecificStats 
(StatsValuesFactory.java:384) at ... 

Se invio richiesta senza statistiche parte o specificare qualsiasi campo non la data di statistiche, invece, vengo aspettavo risposta senza risultati. Sembra un insetto di Solr che prova ad es. per calcolare il valore medio in questo caso. Purtroppo non ho trovato riferimenti su questo problema. C'è un modo per bypassare o risolvere il problema?

risposta

6

Hai ragione, il problema sta calcolando il valore medio:

res.add("mean", new Date(sum/count)); 

sum e count sono entrambi long. Quando count è zero, ovviamente si ottiene ArithmeticException. In realtà stai facendo statistiche su un campo data che non ha mai un valore nel tuo indice. La soluzione più semplice sarebbe rendere le statistiche su un campo che ha almeno un valore, quindi la variabile count sarebbe più grande di zero, la divisione funzionerà, e le statistiche sarebbero ancora più significative credo.

Non si ottiene lo stesso errore con la stessa situazione utilizzando un campo numerico, perché in tal caso la variabile di somma è double, pertanto la divisione non genera errori e il risultato è NaN. In effetti, esistono diverse implementazioni StatsValues basate sul tipo di campo.

UPDATE
ho aperto la questione SOLR-3160 jira e ha fornito una patch che è stato appena commesso. La prossima versione di Solr conterrà la correzione!

+0

Non c'è controllo se il conteggio è uguale a zero? C'è un modo per impostare un altro gestore di questo errore nella richiesta di Solr altro che risposta HTTP 500? – dev4

+0

@ dev4 Non c'è controllo! Penso che la cosa migliore da fare sia aprire un problema con Jira. Se vuoi puoi anche fornire una patch, altrimenti sono sicuro che qualcuno la guarderà, posso farlo anche io. – javanna

+1

@ dev4 Guarda la mia risposta aggiornata! La correzione è già stata eseguita, sarà disponibile con la prossima versione di Solr! – javanna

Problemi correlati