2016-06-03 41 views
0

Ich brauche die solr Ergebnisse auf der folgenden Formel zu sortieren und in desc:Die Sortierung auf der Formel Berechnung basiert Solr

round (1000 * (1 - exp (-(((1 * No. of Likes + 5 × No. of Comments + 10 × No. of Shares) × 10000)/(fans_count^0.8))/1000)) 

ich die unten ausdrücken in sort param verwendet:

rint(product(1000,sub(1,exp(-div(div(product(sum(product(1,likes_count),product(5,comments_count),product(10,shares_count)),10000),pow(fans_count,0.8)), 1000))))) 

Aber es wirft Fehler:

Can't determine a Sort Order (asc or desc) in sort spec .............., pos=152" 

Ich konnte diesen Fehler nicht beheben. Hilfe pls

+0

Sind Sie sicher, dass die Anzahl der Klammern ausgeglichen ist? Versuchen Sie entweder, Leerzeichen zu entfernen, oder fügen Sie 'asc' oder' desc' nach Ihrer Abfrage hinzu. Funktioniert die Formel, wenn Sie nicht nach ihr sortieren, sondern nur den Wert in fl zurückgeben? Oder versuchen Sie es mit '_val_' [Syntax] (https://cwiki.apache.org/confluence/display/solr/Function+Queries#FunctionQueries-UsingFunctionQuery). – MatsLindh

+0

Ja. Es ist ausgeglichen. – Babu

+0

Was ist mit den anderen Vorschlägen? – MatsLindh

Antwort

0

Es funktionierte, als ich den Ausdruck geändert:

rint(product(1000,sub(1,exp(product(div(div(product(sum(product(1,likes_count),product(5,comments_count),product(10,shares_count)),10000),pow(fans_count,0.8)),1000),-1))))) 

Früher stellte ich es als -(x) für die Negation. Aber nachdem ich wie product(x,-1) gewechselt habe, funktioniert es Charme.