Český fulltext a sdílené slovníky     Prague PostgreSQL Developers Day 2012           Tomáš Vondra (tv@fuzzy.cz)          ...
Kdo používá zabudovaný fulltext?
SELECT id, nadpis  FROM dokumenty WHERE fts_idx @@ to_tsquery(cs,hledám);
snowball●   algoritmická normalizace slov    ●   slovesa na infinitiv    ●   podstatná jména na 1. pád    ●   ...●   super...
Bohužel nefunguje pro češtinu :-(                                Okay
ispell●   založeno na slovníku    ●   sada pravidel (skloňování, časování)    ●   slovník (slovo + jak skloňovat)
ispell●   založeno na slovníku    ●   sada pravidel (skloňování, časování)    ●   slovník (slovo + jak skloňovat)●   tři p...
inicializace●   slovník se musí načíst a naparsovat    ●   CPU, I/O    ●   ~ přes vteřinu, podle systému    ●   … nic moc ...
CPU vs. RAM●   krátká vs. dlouhá spojení    ●   oslíkovo dilema    ●   krátká spojení – opakovaná inicializace (CPU)    ● ...
ispell vs. RAM●   virtualizovaná prostředí●   VPS●   sdílené servery       Tam všude je (často) nedostatek RAM.
co s tím?Challenge Accepted
shared_ispell●   načítá slovníky do sdílené paměti    ●   jednorázová inicializace    ●   každý slovník uložen jen jednou●...
shared_ispell API●   info o paměti    ●   shared_ispell_mem_used()    ●   shared_ispell_mem_available()●   slovníky / stop...
shared_ispellhttp://github.com/tvondra/shared_ispell  http://pgxn.org/dist/shared_ispell/        ispell slovník (UTF-8)htt...
Upcoming SlideShare
Loading in …5
×

Český fulltext a sdílené slovníky

951 views

Published on

Standardní implementace ispell slovníků v PostgreSQL má bohužel několik nevýhod co se CPU a paměti týká. Napsal jsem extension která umožňuje slovníky inicializovat jen jednou a sdílet je mezi spojeními.

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
951
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Český fulltext a sdílené slovníky

  1. 1. Český fulltext a sdílené slovníky Prague PostgreSQL Developers Day 2012 Tomáš Vondra (tv@fuzzy.cz) lightning talk
  2. 2. Kdo používá zabudovaný fulltext?
  3. 3. SELECT id, nadpis FROM dokumenty WHERE fts_idx @@ to_tsquery(cs,hledám);
  4. 4. snowball● algoritmická normalizace slov ● slovesa na infinitiv ● podstatná jména na 1. pád ● ...● super věc ● málo paměti ● rychlé odezvy
  5. 5. Bohužel nefunguje pro češtinu :-( Okay
  6. 6. ispell● založeno na slovníku ● sada pravidel (skloňování, časování) ● slovník (slovo + jak skloňovat)
  7. 7. ispell● založeno na slovníku ● sada pravidel (skloňování, časování) ● slovník (slovo + jak skloňovat)● tři problémy ● per connection ● inicializace ● zabírá paměť ● … Actually...Its Not Okay
  8. 8. inicializace● slovník se musí načíst a naparsovat ● CPU, I/O ● ~ přes vteřinu, podle systému ● … nic moc :-(● standardní řešení ● connection pool ● … ale nic není tak růžové
  9. 9. CPU vs. RAM● krátká vs. dlouhá spojení ● oslíkovo dilema ● krátká spojení – opakovaná inicializace (CPU) ● dlouhá spojení – kopie statických dat (RAM)● 25 connections + 2 slovníky (cs + cs_ascii) 500 MB● standardně víc connections (100 ?)
  10. 10. ispell vs. RAM● virtualizovaná prostředí● VPS● sdílené servery Tam všude je (často) nedostatek RAM.
  11. 11. co s tím?Challenge Accepted
  12. 12. shared_ispell● načítá slovníky do sdílené paměti ● jednorázová inicializace ● každý slovník uložen jen jednou● používá se stejně jako obyčejný ispell● paměť je nutno vyhradit předem● ne všechny slovníky
  13. 13. shared_ispell API● info o paměti ● shared_ispell_mem_used() ● shared_ispell_mem_available()● slovníky / stop words ● shared_ispell_dicts() ● shared_ispell_stoplists() ● shared_ispell_reset()
  14. 14. shared_ispellhttp://github.com/tvondra/shared_ispell http://pgxn.org/dist/shared_ispell/ ispell slovník (UTF-8)http://github.com/tvondra/ispell_czech

×