2011-06-20 14 views
5

Chciałbym zwiększyć moje zapytanie poprzez liczbę wyświetleń elementu; W tym celu chciałbym użyć czegoś takiego, jak view_count/max_view_count, aby móc zmierzyć, w jaki sposób liczba wyświetleń elementu odnosi się do największej liczby wyświetleń w indeksie. Znam how to boost the results with a function query, ale jak mogę łatwo uzyskać maksymalną liczbę wyświetleń? Jeśli ktokolwiek mógłby podać przykład, byłoby bardzo pomocne ...Uzyskiwanie maksymalnej wartości pola w Solr

Odpowiedz

9

Nie ma żadnych zagregowanych funkcji pod solr w sposób, w jaki możesz myśleć o nich z SQL. Najprostszym sposobem na to jest mieć proces dwuetapowy:

  • uzyskać wartość max za pośrednictwem odpowiedniego zapytania z jakimś
  • używać go z max function()

So coś jak:

q=*:*&sort=view_count desc&rows=1&fl=view_count 

... aby uzyskać element z max vIEW_COUNT, którą nagrać gdzieś, a następnie

q=whatever&bq=div(view_count, max(the_max_view_count, 1)) 

Należy zauważyć, że funkcja max() nie wykonuje agregacji max; po prostu uzyskałem maksimum z maksymalnej liczby wyświetleń lub 1 (aby uniknąć błędów dzielenia przez zero).

Jeśli masz pole MultiValued (którego nie możesz posortować), możesz również użyć numeru StatsComponent, aby uzyskać maksymalną liczbę. Tak czy inaczej, prawdopodobnie chciałbyś to zrobić raz, nie dla każdego zapytania (powiedzmy, każdej nocy o północy lub czegoś podobnego, gdy zestaw danych ustali się).

+0

Cóż, dziękuję za odpowiedź ... Dodatkowo: Myślę, że trudno jest znaleźć dobrą dokumentację na ten temat, w Apache jest tylko link powyżej i jeden temat dotyczący zapytań funkcjonalnych ... Czy możesz polecić coś jeszcze? –

5

Można dodać tylko: & statystyki = true & stats.field = view_count pojawi się małe statystyki dotyczące tej określonej dziedzinie. Więcej dokumentacji here

+0

Czy możemy użyć wartości maksymalnej i minimalnej, jaką otrzymujemy ze statystyk, do zapytania funkcji? – Ankita

Powiązane problemy