Your SlideShare is downloading. ×

SphinxSearch

843

Published on

prezentacja na 3CAMP#25 – UX SEARCH – 30.03 – 18:00

prezentacja na 3CAMP#25 – UX SEARCH – 30.03 – 18:00

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

  • Be the first to like this

No Downloads
Views
Total Views
843
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SphinxSearch (0.9.9) wydajny oraz prosty do wdrożenia silnik wyszukiwania pełnotekstowego 3CAMP#25 – UX SEARCH – 30.03 – 18:00
  • 2.              O mnie
    • - it od 2002r
    • - wyszukiwarki od 2008r - Morizon.pl (SphinxSearch)
    • - od 2009r Nokaut.pl (SphinxSearch)
    • http://pl.linkedin.com/in/przemekwroblewski
    • Dziękuję Wiktorowi Mazurowi (Nokaut.pl) za pomoc przy tej prezentacji :-)
    • http://www.linkedin.com/in/wiktormazur
  • 3. Wyszukiwanie - uproszczona zasada działania
    • BAZA : 1: Notebook SAMSUNG SF510 2: Notebook SONY Vaio Z 3. Notebook ASUS K52F
    • FULLTEXT :
    • Notebook: [1,2,3]
    • SAMSUNG: [1]
    • SF510: [1]
    • SONY: [2]
    • Vaio: [2]
    • Z: [2]
    • ASUS: [3]
    • K52F: [3]
    odwrotnie niż w bazie danych - inverted index
  • 4. Wyszukiwanie -  uproszczona zasada działania
    • wyszukiwanie dokumentu zawierającego wszystkie frazy -wyszukiwanie z "AND"
    • zapytanie :  Notebook SAMSUNG
    • wynik to przecięcie się zbiorów:
    • Notebook: [1,2,3]
    • SAMSUNG: [1]
    • czyli dokument #1
  • 5. Wyszukiwanie -  uproszczona zasada działania
    • wyszukiwanie dokumentu zawierającego wszystkie frazy -wyszukiwanie z "OR"
    • zapytanie: Notebook SAMSUNG
    • wynik posortowany wg dokumentów z największą ilością przecięć zbiorów (Relevance):
    • Notebook: [1,2,3]
    • SAMSUNG: [1]
    • czyli dokument #1 (2) a następnie #2 (1), #3 (1)
  • 6.   FACETING SEARCH czym jest Search?
  • 7. MySQL FullTextSearch
    • - zastosowane na przełomie 2005/2006r - tylko tabele myisam (singlethreaded) - brak narzutu technologicznego poza istniejący stos (MySQL był od początku) - przy małym ruchu w tamtym czasie rozwiązanie było wystarczające mysql> CREATE TABLE product ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), FULLTEXT(title)) engine=MyISAM; mysql> SELECT * FROM product WHERE MATCH (title) AGAINST ('notebook AND samsung' IN BOOLEAN MODE);
  • 8. SphinxSearch
    • - zastosowany latem 2007r 
    • - działa do dziś
    • wystąpiły 2 problemy przez 4 lata:
    • - brak obsługi id 64bitowych - sphinx to wspiera ale paczka debianowa miała to wyłączone więc trzeba było zrobić własna paczkę
    • - długie czasy odpowiedzi gdy działał na serwerze www, przeniesienie na osobne serwery zlikwidowało problem
  • 9. SphinxSearch + Rails
  • 10. SphinxSearch + Rails powyższe metody zwracają kolekcje tak jak metoda find
  • 11. Sphinx - konfiguracja
    • # SOURCES
    • source src_category
    • {
    •      type                = mysql
    •      sql_host            = 127.0.0.1
    •      sql_user            = sphinx
    •      sql_pass            = sphinx
    •      sql_db              = production
    •      sql_port            = 3306
    •      sql_query_pre       = SET NAMES UTF8
    •      sql_query_range     = SELECT MIN(id), MAX(id) FROM category
    •      sql_range_step      = 1000
    •      sql_query           = SELECT id, title
    •                            FROM category
    •                            WHERE id >= $start AND id <= $end
    •      sql_query_info      = SELECT * FROM category WHERE id=$id
    • }
  • 12. Sphinx - konfiguracja
    • # INDEXES
    • index category
    • {
    •      source              = src_category
    •      path                = /home/sphinx/category
    •      docinfo             = extern
    •      morphology          = none
    •      stopwords           =
    •      min_word_len        = 2
    •      charset_type        = utf-8
    •      charset_table       = 0..9, A..Z->a..z, _, a..z, U+0143->U+0144, U+0104->U+0105, U+0106->U+0107, U+0118->U+0119, U+0141->U+0142, U+00D3->U+00F3, U+015A->U+015B, U+0179->U+017A, U+017B->U+017C, U+0105, U+0107, U+0119, U+0142, U+00F3, U+015B, U+017A, U+017C, U+0144
    •      min_prefix_len      = 2
    •      min_infix_len       = 0
    •      enable_star         = 1
    •      html_strip          =
    •      html_index_attrs    = 1
    • }
  • 13. Sphinx - konfiguracja
    • #
    • # SEARCHER CONFIG
    • #
    • searchd
    • {
    •      address             = 0.0.0.0
    •      port                = 3312
    •      listen              = localhost:9306:mysql41
    •      read_timeout        = 5
    •      max_children        = 30
    •      pid_file            = /var/run/sphinx/searchd.pid
    •      max_matches         = 4000
    •      #log                = /var/log/searchd.log
    •      #query_log          = /var/log/query.log
    • }
  • 14. Sphinx - konfiguracja
    • Indeksowanie
    • :~$ /usr/local/bin/indexer --config nokaut.conf
    • Uruchomienie daemona :~$ /usr/local/bin/searchd --config nokaut.conf
  • 15. Wyszukiwanie - sphinx API
    • :~$ mysql -h127.0.0.1 -P9306
    • Welcome to the MySQL monitor.  Commands end with ; or g.
    • Your MySQL connection id is 1
    • Server version: 0.9.9-id64-release (r2117)
    • mysql> select * from nokaut_category where MATCH('zmywarki');
    • +------+--------+
    • | id   | weight |
    • +------+--------+
    • | 1523 |   1698 |  ( Zmywarki do zabudowy )
    • | 5815 |   1698 |  ( Zmywarki )
    • | 8992 |   1698 |  ( Zmywarki gastronomiczne )
    • +------+--------+
    • 3 rows in set (0,02 sec)
  • 16. High availability
    • RSYNC na 4 serwery
    • 1 SPARE
    • aplikacja sama losuje serwer
  • 17. Wydajność
    • &quot;Sphinx clusters scale up to billions of documents and tens of millions search queries per day, powering top websites such as  Craigslist ,  DailyMotion ,  NetLog , etc.
    • And last but not least, it's open-sourced under GPLv2, and the community edition is free to use.
    • Performance and scalability
      • Indexing performance.  Sphinx indexes up to 10-15 MB of text per second per single CPU core, that is  60+ MB/sec per server  (on a dedicated indexing machine).
      • Searching performance.  Searching through 1,000,000-document, 1.2 GB text collection that we use for everyday development and testing runs at  500+ queries/sec  on a 2-core desktop machine with 2 GB of RAM.
      • Scalability.  Biggest known Sphinx cluster indexes almost  5 billion documents , resulting in over  6 TB of data . Busiest known one is, unsurpisingly,  Craigslist , top-10 website in the US that serves  50+ million search queries/day.&quot;
    --  http://sphinxsearch.com/about/sphinx/
  • 18. Wydajność index: 17GB, ~12M dokumentów budowanie indexu 7GB,  5M dokumentów trwa 840s 8,5MB/s 5952 dokumentów/s Wyszukiwanie ~160 zapytań/s
  • 19. Wydajność index: 17GB, ~12M dokumentów
  • 20. Wydajność index: 17GB, ~12M dokumentów
  • 21. Wydajność index: 17GB, ~12M dokumentów
  • 22. Usability
    • wg badań użyteczności search był ostatnią próbą znalezienia w serwisie dla użytkownikow nawigujących w serwisie:
    •  
      • pasek rozrzadu citroen xsara picasso
      • clatronic odkurzacz
      • duza lalka arielka 95cm wysokosci
      • telewizor lg 40 cali
      • damska torba na laptop 15,6
      • telewizor samsung lcd 50
      • nozyce do kabli NAJTAŃSZE
    •  
    • kategoria producent model cecha
  • 23. Usability
    • Search jako zaawansowany filtr
    • - w kategorii Opony częsta fraza wyszukiwania to &quot;zimowe&quot;
    • - przyzwyczajenia z allegro są przenoszone w inne miejsca
    • Jakość danych wpływa na bounce rate, obrazuje się jako wyłowienie cech z searcha
  • 24. Usability
    • ilość inputów na stronie - 1 search wystarczy, 
    • 2gi nie poprawi jakości wyników ;-)
  • 25. Usability
    • www.nokaut.pl/szukaj/czajniki
    •  
    • poprawne działanie dla użytkownika:
      • wyswietlić filtry dla kategorii czajników
      • ignorujemy wyniki z słowem czajnik,
      • pokazujemy wyniki dla kategorii
    •  
    • filtry: 
    •  
      • kategoria (gazowe,elektryczne) 
      • producent,
      • wspolny filtr: kolorystyka, 
      • objętość dla czajników elektryczny i gazowy
  • 26. Autosugestia
  • 27. Autosugestia zła autosugestia - bounce-rate rośnie
  • 28. Wyszukiwanie w liczbach
    • 20% odsłon na stronie search (3M wejść)
    • 5% użytkowników świadomie korzysta z searcha
    • średnio 1 UU korzysta 2x z searcha
    •  
    • Lepszy kontent + funkcjonalność
    • do 2giej głębokości strony po searchu dociera ~40% użytkowników
    • lepszy wynik (jakość wyszukiwania!, filtrowanie wyników) zmniejszy bounce rate
    •  
    •  
    •  
    •  
    •  
    •  
    • koło 400k użyć przez urzytkownikow 
    • 200k UU / 4,2M UU korzysta z searcha
    • 3M wejsc na strone searcha
    • searcha/miesiąc
    • odsłon 14,5M
    • ile % userów korzysta z searcha:
    • 4,2M UU
    • Podpowiadanie
    • FAIL:
    • skapiec: ipo (ruch myszka) + enter
    • przekierowuje na produkt z listy
    • bounce-rate rośnie
    • Ruch
    • sitemapa - linki do wyszukiwania
    • dodatkowo linki do wyszukiwania uzytkownikow (crosslinki, uzytkownicy wyszukiwali takze...)
    • Lepszy kontent + funkcjonalność
    • część ruchu wchodzi na strone searcha:
    • wykres zależność page depth od ilości użytkownikow
    • do 2giej strony dociera ~40% - lepszy wynik mniejszy bounce rate (jakość wyszukiwania!, filtrowanie wyników)
    • konwersja - tajne, nie powiem!
  • 29. Trafne wyniki przy błędnych zapytaniach
    • Podstawy
      • wielkość liter
      • polskie znaki
    •  
    Z archiwum searchlog-a: 1. lodowko zamrazarka wysokość175cm 2. SKRZYNIA BIEGÓW mercedes a klasa 3. expres dokawy 4. sharp 42 wd1 5. dlla150s417 (wtryskiwacz) 6. dvd dirty dancing cichopek i hakile 7. clinique 3 kroki do cey miesznej
    • Inne techniki
      • łączenie wyrazów
      • tokenizacja liczb i cyfr
      • levenstein, ..., ... ?
  • 30. Dziękuję czytajcie wasze search logi! http://kariera.grupanokaut.pl/

×