2011-01-18 20 views
6

Czy Lucene zapewnia sposób na ulepszenie świeżych dokumentów?Zwiększanie świeżości dokumentów dzięki Lucene

Załóżmy na przykład, że dokument Lucene zawiera pole daty. Czy jest to możliwe, bez konieczności modyfikowania jej zapytania, aby przedstawić najnowsze dokumenty z wyższym wynikiem?

Nie chcę uciekać się do prostego rozwiązania "sortuj według daty", ponieważ całkowicie anuluje to algorytm oceny.

Odpowiedz

3

Użyj Document.setBoost (wartość zmiennoprzecinkowa) podczas wprowadzania dokumentów do indeksu.

Możesz albo ciągle zmieniać wartość istniejących dokumentów, albo mieć wartość zmiennoprzecinkową, która zwiększa się wraz z datą, więc musisz tylko zastosować ją do czasu wstawienia dokumentów.

Na przykład zacznij od wartości doładowania 0 dla dokumentów pierwszego dnia. Każdego dnia zwiększaj wartość dodaną o 1. Jest to wartość zmiennoprzecinkowa, która zwiększając się o 365 każdego roku będzie trwać długo.

Być może trzeba będzie poeksperymentować z mocą wzmocnienia, aby uzyskać pożądany efekt.

+0

Dziękuję za odpowiedź. Jest bardzo inteligentny w teorii, ale muszę go dokładnie przetestować, aby sprawdzić, czy rzeczywiście działa. W każdym razie, bardzo sprytnie, co rodzi pytanie, dlaczego jest nieudokumentowane. Można się było spodziewać, że znajdzie się w książce kucharskiej lub coś takiego ... – yannisf

6

Możesz zobaczyć Lucene w akcji. W drugim wydaniu pg. 187 dają sposób na zrobienie tego. Zasadniczo, będziesz chciał napisać własne zapytanie, które rozszerza CustomScoreQuery i dodaje doładowanie.

+0

Dobra odpowiedź też! Dzięki za podpowiedź! – yannisf