3camp - Lucene pod presją?

844 views

Published on

Jak się sprawdza w dużym portalu silnik wyszukiwawczy oparty o bibliotekę Lucene?

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
844
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

3camp - Lucene pod presją?

  1. 1. Lucene pod presjąJak się sprawdza w dużym portalu silnik wyszukiwawczy oparty o bibliotekę Lucene? Dominika Puzio Patryk Makuch 30 marca 2011
  2. 2. Luceneco to jest? 2
  3. 3. Dlaczego Lucene? 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ć Lucenelokalnie w serwisach 3
  4. 4. Dlaczego nie SOLR?lub inny gotowy serwer... 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 … 4
  5. 5. Architektura rozwiązania 5
  6. 6. Architektura rozwiązaniaco trzeba było zapewnić? 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 6
  7. 7. Serwer w liczbach Liczba zapytań: kilkanaście mln na dobę Czasy odpowiedzi: dla standardowych artykułów (dużo tekstu) – kilka ms niestandardowe: docelu.pl (geosearch) - ~40 ms ogloszenia.wp.pl (dużo kryteriów) - ~50 ms tanio.pl (kategoryzacja) - ~15 ms Wielkości indeksów: liczba dokumentów: najmniejsze – kilka tysięcy największe – kilka mln rekordzista - ~30mln 7
  8. 8. Serwer w liczbachc.d. 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 8
  9. 9. Jak się sprawdza Lucene?błędy w Lucene 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 9
  10. 10. Jak się sprawdza Lucene?błędy w LuceneCaused by: java.lang.OutOfMemoryError: OutOfMemoryError likely caused by the Sun VMBug described in https://issues.apache.org/jira/browse/LUCENE-1566; try callingFSDirectory.setReadChunkSize with a a value smaller than the current chunk size(104857600) atorg.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.readInternal(NIOFSDirectory.java:179) atorg.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) atorg.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) 10
  11. 11. Jak się sprawdza Lucene?wydajność O wydajność trzeba zadbać... 11
  12. 12. Jak się sprawdza Lucene?dostosowanie Kategoryzacja – w Lucene nie ma Analizatory – dopisujemy nowe w miarę zapotrzebowania Geosearch (contrib) – poprawka wydajnościowa 12
  13. 13. Zasoby wiedzy Lucene Wiki http://wiki.apache.org/lucene-java/FrontPage?action=show&redirect=FrontPageEN Luke http://code.google.com/p/luke/ Java User List java-user@lucene.apache.org M. McCandless, E. Hatcher, O. Gospodnetić „Lucene in Action, Second Edition” Lucid Imagination http://www.lucidimagination.com/ 13
  14. 14. Dziękujemy za uwagę 14

×