2011-11-23 4 views
8

Mam indeks Solr z wieloma wpisami, a po zapytaniu zwracany jest pewien podzbiór - każdy wpis ma pewien wynik, (oczywisty). Gdy wyniki zostaną zwrócone z ocenami, chcę móc tylko "zachować" wyniki powyżej pewnego wyniku (tj. Tylko wyniki określonej jakości). Czy można to zrobić, gdy zwróconym podzbiorem może być cokolwiek?Czy można ustawić próg Wyniku Solr "w rozsądny sposób", niezależnie od zwracanych wyników? (tzn. czy Solr Scoring jest w jakikolwiek sposób znormalizowany)

Pytam, ponieważ wydaje się, że w przypadku niektórych zapytań wynik wynoszący 0,008 skutkuje przyzwoitym dopasowaniem, podczas gdy inne zapytania o wyższym wyniku skutkują słabym dopasowaniem.

Idealnie po prostu szukam metody, aby wziąć najlepsze wpisy x, o ile są one co najmniej określonej jakości.

Z góry dziękuję!

+0

Patrz także: http://stackoverflow.com/questions/5379176/how-to-normalize-lucene -scsres http://stackoverflow.com/questions/3986220/how-do-i-normalise-a-solr-lucene-score http://stackoverflow.com/questions/2871558/remove-results-below-a-ertain -score-threshold-in-solr-lucene/15765203 – kenorb

Odpowiedz

4

Myślę, że nie powinieneś tego robić. W przypadku modelu punktacji TF-IDF nie ma możliwości obliczenia wyniku, powyżej którego wszystkie wyniki są trafne i odwrotnie. Jeśli uda Ci się to zrobić, jest bardzo prawdopodobne, że ten próg nie będzie już ważny po kilku aktualizacjach indeksu (ponieważ częstotliwości dokumentów ulegną zmianie).

Jeśli nadal chcesz to zrobić, myślę, że jest to możliwe dzięki funkcjom zapytań: w systemie Solr dostępne są funkcje if (w trybie trunk) i query. Po prostu filtruj wyniki, aby zachować tylko te wpisy, które mają wyższy wynik niż określony próg.

+0

+1 dla "... co mpute wynik, powyżej którego wszystkie wyniki są istotne " – aitchnyu

+0

Dzięki !, Czy masz zalecaną metodę" przesiewania "najlepsze wyniki? Coś podobnego do rozwiązania @Jayendra dzielenia przez maxScore. – csjohn

+0

Nie mam, ponieważ nie ma na to dobrego sposobu. Nawet przepisując wyniki jako wartości procentowe, uzyskasz zwodnicze wyniki. Jeśli jednak używasz czysto dezaktywujących zapytań, możesz być zainteresowany parametrem "minimum powinien pasować" (E) DisMaxQueryParser, który pozwala upewnić się, że na przykład co najmniej 75% klauzul musi pasować do dokumentu, aby być uwzględnione w wynikach. – jpountz

2

Najpierw chciałbyś przejść przez ScoresAsPercentages.

Solr nie normalizuje wyników, ponieważ może to być łatwo wykonane po stronie klienta.
możesz użyć maxScore, który jest podany w wynikach, dzieląc wszystkie wyniki przez maksimum .
Pierwszy rekord będzie miał wynik 1, a następnie resztę.

+0

Przeczytałem dokument ScoresAsPercentages przed - i są one silną sugestią, aby tego nie robić. Jak się czujesz dzieląc przez maxScore "działa"? To znaczy, czy zapewnia sensowne porównanie wyników, czy też nie jest świetne. Dziękuję za odpowiedź. – csjohn

+0

Dzielenie przez maxscore powinno umożliwić odfiltrowanie wyników i ich zakres. jednak nadal nie gwarantuje, że dokument z maxscore jest odpowiedni. – Jayendra

Powiązane problemy