Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Shared ispell dictionary (stored in shared segment, used by multiple connections)

License

NotificationsYou must be signed in to change notification settings

postgrespro/shared_ispell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shared ISpell Dictionary========================This PostgreSQL extension provides a shared ispell dictionary, i.e.a dictionary that's stored in shared segment. The traditional ispellimplementation means that each session initializes and stores thedictionary on it's own, which means a lot of CPU/RAM is wasted.This extension allocates an area in shared segment (you have tochoose the size in advance) and then loads the dictionary into itwhen it's used for the first time.If you need just snowball-type dictionaries, this extension is notreally interesting for you. But if you really need an ispelldictionary, this may save you a lot of resources.Install-------Installing the extension is quite simple, especially if you're on 9.1.In that case all you need to do is this:   $ make installand then (after connecting to the database)   db=# CREATE EXTENSION shared_ispell;If you're on pre-9.1 version, you'll have to do the second part manuallyby running the SQL script (shared_ispell--x.y.sql) in the database. Ifneeded, replace MODULE_PATHNAME by $libdir.Config------No the functions are created, but you still need to load the sharedmodule. This needs to be done from postgresql.conf, as the moduleneeds to allocate space in the shared memory segment. So add this tothe config file (or update the current values)   # libraries to load   shared_preload_libraries = 'shared_ispell'   # known GUC prefixes   custom_variable_classes = 'shared_ispell'   # config of the shared memory   shared_ispell.max_size = 30MBYes, there's a single GUC variable that defines the maximum size ofthe shared segment. This is a hard limit, the shared segment is notextensible and you need to set it so that all the dictionaries fitinto it and not much memory is wasted.To find out how much memory you actually need, use a large value(e.g. 200MB) and load all the dictionaries you want to use. Then usethe shared_ispell_mem_used() function to find out how much memorywas actually used (and set the max_size GUC variable accordingly).Don't set it exactly to that value, leave there some free space,so that you can reload the dictionaries without changing the GUCmax_size limit (which requires a restart of the DB). Ssomethinglike 512kB should be just fine.The shared segment can contain several dictionaries at the same time,the amount of memory is the only limit. There's no limit on numberof dictionaries / words etc. Just the max_size GUC variable.Using the dictionary--------------------Technically, the extension defines a 'shared_ispell' template thatyou may use to define custom dictionaries. E.g. you may do this    CREATE TEXT SEARCH DICTIONARY czech_shared (        TEMPLATE = shared_ispell,        DictFile = czech,        AffFile = czech,        StopWords = czech    );    CREATE TEXT SEARCH CONFIGURATION public.czech_shared        ( COPY = pg_catalog.simple );    ALTER TEXT SEARCH CONFIGURATION czech_shared        ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,                        word, hword, hword_part        WITH czech_shared;and then do the usual stuff, e.g.    SELECT ts_lexize('czech_shared', 'automobile');or whatever you want.Resetting the dictionary------------------------If you need to reset the dictionary (e.g. so that you can reload theupdated files from disk), use shared_ispell_reset() function. Eveyonewho already uses the dictionaries will be forced to reinitialize thedata (first one will rebuild the dictionary in shared segment, theother ones will use this).    SELECT shared_ispell_reset();That's all for now ...

About

Shared ispell dictionary (stored in shared segment, used by multiple connections)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C91.5%
  • PLpgSQL3.8%
  • Meson3.1%
  • Makefile1.6%

[8]ページ先頭

©2009-2025 Movatter.jp