Upload
wirtualna-polska
View
557
Download
2
Embed Size (px)
DESCRIPTION
Jak się sprawdza w dużym portalu silnik wyszukiwawczy oparty o bibliotekę Lucene?
Citation preview
Lucene pod presją
Jak się sprawdza w dużym portalu silnik wyszukiwawczy oparty
o bibliotekę Lucene?
Dominika PuzioPatryk Makuch
30 marca 2011
Lucene co to jest?
2
Dlaczego Lucene?
3
Potrzebowaliśmy nowego silnika
Z doświadczeń z poprzednimi silnikami wynikało, że:
to musi być open source
powinien być skrojony na miarę
powinien być rozszerzalny
powinien być przetestowany przez innych
powinien się rozwijać
potrzebujemy porządnej dokumentacji i źródeł wiedzy
Lucene wygrywała wszystkie rankingi silników open source odpowiednich do zastosowań przemysłowych
Deweloperzy piszący serwisy sami zaczęli używać Lucene lokalnie
w serwisach
Dlaczego nie SOLR? lub inny gotowy serwer...
4
Wtedy SOLR się nie nadawał
Potrzebowaliśmy czegoś skrojonego na miarę
Dziś warto zwrócić uwagę na gotowe rozwiązania:
SOLR – gotowy serwer, communities Lucene i SOLRa mają się połączyć
Katta – gotowy serwer, do bardzo dużych indeksów, ukierunkowany na klastrowanie
Nutch – gotowa wyszukiwarka www ( Lucene + SOLR + crawler )
Tika – adapter do różnych formatów dokumentów
Carrot – czyta indeksy Lucene i wykonuje klasteryzację danych
…
Architektura rozwiązania
5
Architektura rozwiązania co trzeba było zapewnić?
6
klastrowanie
load-balancing zapytań
możliwość regeneracji indeksu (automatycznie albo „z ręki”)
100% dostępność wyszukiwania podczas regeneracji indeksu
konfiguracja indeksu
administracja serwerem
monitoring
Serwer w liczbach
7
Liczba zapytań: kilkanaście mln na dobę
Czasy odpowiedzi:
dla standardowych artykułów (dużo tekstu) – kilka ms
niestandardowe:docelu.pl (geosearch) - ~40 msogloszenia.wp.pl (dużo kryteriów) - ~50 mstanio.pl (kategoryzacja) - ~15 ms
Wielkości indeksów:
liczba dokumentów:najmniejsze – kilka tysięcynajwiększe – kilka mlnrekordzista - ~30mln
Serwer w liczbach c.d.
8
Wielkości indeksów c.d.:
wielkość indeksu na dysku:od kilku kB do ~30GBśrednio kilkaset MB - kilka GB
Wydajność indeksowania:
budowanie z bazy danych – do ~3500 dok/s
update indeksu – do kilkuset dok/s
Sprzęt:
klastry po dwie maszyny serwerowe
Jak się sprawdza Lucene? błędy w Lucene
9
Corrupted index – zdarzało się uszkodzenie metadanych indeksu FIXED
Problem z commitem zmian FIXED
Sortowanie ciągów ze spacjami przy włączonej obsłudze znaków diakrytycznych – na lucene-java-users jest opis obejścia problemu
Gwiazdki FIXED
Na grupie lucene-java-users odpowiedź na zgłoszony problem pojawia się w ciągu kilku godzin
Jak się sprawdza Lucene? błędy w Lucene
10
Caused by: java.lang.OutOfMemoryError: OutOfMemoryError likely caused by the Sun VM Bug described in https://issues.apache.org/jira/browse/LUCENE-1566; try calling FSDirectory.setReadChunkSize with a a value smaller than the current chunk size (104857600) at org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:179) at org.apache.lucene.store.BufferedIndexInput.readBytes(BufferedIndexInput.java:139) at org.apache.lucene.index.SegmentReader$Norm.bytes(SegmentReader.java:472) at org.apache.lucene.index.SegmentReader.getNorms(SegmentReader.java:1059) at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java:1066) at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:79) at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:306) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:210) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:170) at org.apache.lucene.search.Searcher.search(Searcher.java:98)
Jak się sprawdza Lucene? wydajność
11
O wydajność trzeba zadbać...
Jak się sprawdza Lucene? dostosowanie
12
Kategoryzacja – w Lucene nie ma
Analizatory – dopisujemy nowe w miarę zapotrzebowania
Geosearch (contrib) – poprawka wydajnościowa
Zasoby wiedzy
13
Lucene Wiki
http://wiki.apache.org/lucene-java/FrontPage?action=show&redirect=FrontPageEN
Luke http://code.google.com/p/luke/
Java User List [email protected]
M. McCandless, E. Hatcher, O. Gospodnetić „Lucene in Action, Second Edition”
Lucid Imaginationhttp://www.lucidimagination.com/
14
Dziękujemy za uwagę