2010-12-07 9 views
6

Szukam "dokumentów produktu". Innymi słowy, moje dokumenty solr są zapisami produktu. Chcę powiedzieć 50 najlepszych produktów pasujących do zapytania. Następnie chcę mieć możliwość sortowania 50 najlepszych dokumentów scoringowych według nazwy lub ceny. Nie widzę zbyt wiele, jak to zrobić, ponieważ sortowanie według wyniku, a następnie według nazwy lub ceny, nie pomoże, ponieważ wyniki są zmienne.Jak mogę ograniczyć liczbę punktów przed sortowaniem w zapytaniu Solr?

Nie miałbym nic przeciwko, gdybym mógł zrobić coś takiego, jak odwzorować wyniki na zakresy (jak wynik 8,0-8,99 w 8 wynikach), posortować według zakresu, następnie według nazw, ale ponieważ istnieje w zasadzie brak normalizacji do punktacji, to jeszcze sprawiłoby, że sprawy byłyby nieco trudniejsze.

Tl; dr Jak wykluczyć dokumenty o niskiej punktacji z zestawu wyników solr przed sortowaniem?

Odpowiedz

3

Można użyć frange do osiągnięcia tego celu, tak długo, jak nie chcesz, aby posortować na wynik (w tym przypadku myślę, że cię mógł po prostu wykonać filtrowanie po stronie klienta).

Zapytanie byłoby coś wzdłuż linii:

q={!frange l=5}query($qq)&qq=[awesome product]&sort=price asc 

Ustaw argument lw Q-frange-parametr do dolnej granicy chcesz filtrować wynik na, i zastąpienie parametru qq z telefonem zapytanie użytkownika.

+0

dziękuję, ponieważ mogę uzyskać rozsądną wartość od pierwszego wyświetlenia wyników sortowanych według wyniku, działa to doskonale! – Zak

0

Nie sądzę, można po prostu

wykluczyć niskie dokumentów punktacji od Solr zestaw wyników przed sortowaniem

ponieważ wynik Znaczenie ma sens tylko dla danej kombinacji zapytaniu i wynikowa lista dokumentów. To znaczy. wyniki są znaczące tylko w ramach danego wyszukiwania i nie można ustawić progu dla wszystkich wyszukiwań.

Jeśli korzystasz z Java (lub PHP), możesz pobrać 50 najlepszych dokumentów, a potem ponownie posortować listę w swoim języku programowania, ale nie sądzę, że możesz to zrobić za pomocą SOLR.

W każdym razie, polecam, aby nie zejść na tę drogę ponownego sortowania wyników z SOLR, ponieważ będzie to po prostu dezorientować użytkownika. Ludzie oczekują, że wyniki wyszukiwania będą podobne do Google (i większości innych wyszukiwarek), a wyniki powracają w jakiejś formie rankingu TFIDF.

Po tym, można użyć innych kryteriów do rozdzielania dokumentów o takich samych ocenach istotności, dodając współczynnik index-time boost w oparciu o skalę cen.

Proponuję, abyś użył SOLR do swoich mocnych stron i używał faset. Podaj aspekt cenowy po lewej stronie (np. Ebay, Amazon, itp.) I/lub aspekt kategorii produktu itp. Dodaj także widżet "sortowania", aby umożliwić sortowanie wyników według nazwy produktu, jeśli użytkownik chce to.

[EDIT] kwestia ta może również być przydatne:

Digg-like search result ranking with Lucene/Solr?

0

Jak zauważył Karl Johansson, można wykonać filtrowanie po stronie klienta: wczytaj pierwsze 50 wierszy odpowiedzi (posortowane według wyników), a następnie zmodyfikuj je na przykład w JS.

The działa fantastycznie dla tego rodzaju rzeczy: sortowanie, sortowanie na wielu kolumnach, filtrowanie dynamiczne, itp. - i tylko z 50 rzędami byłoby również bardzo szybko, dzięki czemu użytkownicy mogą "grać" z sortowaniem i filtrowanie, dopóki nie znajdą tego, czego chcą.