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

  • 441 views
Uploaded 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 …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
441
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
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. Český fulltext a sdílené slovníky Prague PostgreSQL Developers Day 2012 Tomáš Vondra (tv@fuzzy.cz) lightning talk
  • 2. Kdo používá zabudovaný fulltext?
  • 3. SELECT id, nadpis FROM dokumenty WHERE fts_idx @@ to_tsquery(cs,hledám);
  • 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. Bohužel nefunguje pro češtinu :-( Okay
  • 6. ispell● založeno na slovníku ● sada pravidel (skloňování, časování) ● slovník (slovo + jak skloňovat)
  • 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. 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. 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. ispell vs. RAM● virtualizovaná prostředí● VPS● sdílené servery Tam všude je (často) nedostatek RAM.
  • 11. co s tím?Challenge Accepted
  • 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. 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. shared_ispellhttp://github.com/tvondra/shared_ispell http://pgxn.org/dist/shared_ispell/ ispell slovník (UTF-8)http://github.com/tvondra/ispell_czech