Czytam artykuł Douga Cutting; "Space optimizations for total ranking".Algorytm Lucene'a
Odkąd został napisany dawno temu, zastanawiam się, jakich algorytmów używa lucene (w odniesieniu do przechodzenia listy wpisów i obliczania wyniku, rankingu).
W szczególności, opisany tam algorytm klasyfikacji całkowitej obejmuje przechodzenie przez całą listę księgowań dla każdego zapytania, więc w przypadku bardzo popularnych terminów zapytań, takich jak "żółty pies", jedno z dwóch terminów może mieć bardzo długie posty lista w przypadku wyszukiwania w Internecie. Czy naprawdę są oni obecni w Lucene/Solr? Czy są jakieś heurystyki do skracania listy?
W przypadku, gdy zwracane są tylko najwyższe wyniki k, rozumiem, że dystrybucja listy księgowań na wielu komputerach, a następnie łączenie najwyższego k z każdego z nich zadziała, ale jeśli będziemy musieli zwrócić "setną strona wyników ", czyli wyniki w rankingu od 990-1000th, wtedy każda partycja będzie musiała jeszcze znaleźć top 1000, więc partycja niewiele by pomogła.
Czy istnieje jakaś szczegółowa dokumentacja dotycząca wewnętrznych algorytmów używanych przez Lucene?
dodatkowo, każdy wie, z grubsza (oczywiście szczegóły są tajemnicą, ale myślę, że główne pomysły powinny być dość powszechne w tych dniach), w jaki sposób Google wykonuje szybką pozycję w przypadku zapytań wielo-terminowych z AND? (jeśli ich księgowania są sortowane według kolejności w rankingu PageRank, zrozumiałe jest, że zapytanie jednokrotne szybko zwróci wartość top-k, ale jeśli jest to termin wielokrotny, będą musiały przechodzić przez całą listę, aby znaleźć zestaw wstawienia, ponieważ listy nie są sortowane według dokumentu, tak jak w przypadku Lucene). –
Nie wiem, jak to działa, ale jeśli chcesz zrobić wczesne zakończenie zapytania, powinieneś dopasować porządek indeksu (doc dokumentów) do trafności (pagerank w twoim case), przynajmniej w podziale na segmenty. Rozwiązałoby to Twój problem w przypadku zapytań długoterminowych. – jpountz