SETUP INSTRUCTIONS for SINGLE USER LexDB ======================================== ## create user bond sudo su Password: root@gin:/home/bond # su postgres postgres@gin:/home/bond$ createuser -U postgres --no-adduser bond Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) y CREATE ROLE postgres@gin:/home/bond$ $ export MyLexDB=erg $ createdb $MyLexDB [NOW edit SQL script file 'su-init.sql' to specify the LexDB fields] $ psql $MyLexDB => \i su-init.sql [now load the field mappings...] => \copy dfn from lexdb.dfn => \q [NOW load your grammar, as normal, in the LKB] [then open a connection to the empty LexDB...] LKB(): (initialize-lexdb :type :single-user :dbname "MYLEXDB") [and export you lexicon to dump files for the database...] LKB(): (export-lexicon) [import the dump file into the database...] Change encoding to utf-8 $ psql $MyLexDB => \copy lex from /home/bmw20/tmp/LinGO.rev LKB->Set Options->*LEXDB-PARAMS* = ((:dbname "MYLEXDB") (:type :single-user)) [NOW reload grammar in LKB, and you should see a messages similar to the following: ... (LexDB) connected to LexDB erg2@localhost:5432 as database user bmw20 (LexDB) total 'lex' entries available: 23055 ... ] [now we initialize the table of orthography keys...] LKB(): (new-lex-key-table *lexicon*) [and the database SEMI...] LKB(): (new-semi *lexicon*) and index for generation THAT'S IT ======================================================================== to dump the database (from inside psql) - \copy lex to ~/delphin/grammars/japanese/lex/Jacy.rev Description: - lexicon entries should be made available in 'lex' (which can be a table or a view) - the mapping from database fields into AVM path-values in specified in 'dfn' - a table 'lex_key' is generated by '(new-lex-key-table *lexicon*)' and is used for lexicon lookup - a number of tables (and a view) 'semi_*' are generated by '(new-semi *lexicon*)' and store the database object SEMI - you are responsible for ensuring that there exists an appropriate index on the 'name' field of 'lex' (or things will run slow...) - you are free to define 'lex' as a view (eg. you could store a large number of lexicon entries in another table 'all_entries', create a table 'active'to specify which entry 'name's you want in view, then define 'lex' as: CREATE VIEW lex AS active JOIN all_entries USING name; ======================================================================== If Kuribayashi-san and I both try to play with the lexicon, mayhen ensues. To redo the semi (very sub-optimal): sudo su postgres postgres$ psql --command "DROP TABLE semi_extra, semi_frame, semi_mod, semi_pred, semi_var CASCADE;" jacy start jacy, when it complains that semi_pred doesn't exist, then (new-semi *lexicon*).