/[pgestraier]/trunk/README.pod
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/README.pod

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 51 by dpavlin, Tue May 9 22:55:42 2006 UTC revision 54 by dpavlin, Thu May 11 10:19:46 2006 UTC
# Line 23  PostgreSQL (tested with versions 7.4 and Line 23  PostgreSQL (tested with versions 7.4 and
23    
24  =item *  =item *
25    
26  Hyper Estraier (tested with 0.5.0-1.0.0+, version newer than 0.9.6 are  Hyper Estraier (tested with various versions, recommended 1.2.4 of newer)
 recommended)  
27    
28  =back  =back
29    
# Line 38  working perl installation Line 37  working perl installation
37    
38  =item *  =item *
39    
40  perl modules C<DBI>, C<DBD::Pg>, C<Test::More> and optionally C<HyperEstraier>  perl modules C<DBI>, C<DBD::Pg>, C<Test::More> and optionally C<Search::Estraier>
41    
42  =item *  =item *
43    
# Line 62  and see sample results. You will be aske Line 61  and see sample results. You will be aske
61  install C<pgest.so> shared library in system-wide location so that PostgreSQL  install C<pgest.so> shared library in system-wide location so that PostgreSQL
62  could access it.  could access it.
63    
64  Next, you will have to create test index. You have two options:  =head2 Create sample index using Hyper Estraier perl bindings
65    
66  =head2 Create index using estcmd  Perl bindings for Hyper Estraier are available at CPAN:
67    
68  This will create temporary files on disk and index them using estcmd gather  L<http://search.cpan.org/~dpavlin/Search-Estraier/>
69    
   cd data  
   make index  
   cd ..  
70    
71  B<Warning:> this method is incomplete and won't create node index needed  After installing C<Search::Estraier> you can create index using following commands:
 to run last examples in C<test.sql> correctly. Solution is simple: either  
 symlink your newly created index to Hyper Estraier C<_node> directory or  
 create node and fill re-create index using C<estcall>.  
   
 =head2 Create index using Hyper Estraier perl bindings  
   
 Perl bindings for Hyper Estraier are available at  
   
 L<http://hyperestraier.sourceforge.net/binding/>  
   
 However, they don't support node API (yet), so you will have to use  
 my modified version which is available at  
 L<http://svn.rot13.org/> in C<hyperestraier_wrappers> repository.  
   
 If you installed bindings as documented in README file, you can use  
 perl binding to create index about three times faster than using C<estcmd>  
 (to be fair, I must say that creation of intermediate files take most time,  
 not indexing).  
   
 However, you will first need to create node I<trivia> using Hyper Estraier's  
 administration interface at L<http://localhost:1978/masterui>. You will also  
 need user C<admin> with password C<admin> because those values are  
 hard-coded in C<indexer.pl>. If you want to use different user on index  
 name, feel free to change script.  
72    
73    cd data    cd data
74    make perl    make index
75    cd ..    cd ..
76    
77  To run tests (which require that you have estcmd in your $PATH) issue  To run tests (which require that you have estcmd in your $PATH) issue
78    
79    make test    make test
80    
81  See also included file test.sql for more examples of usage.  See also included file C<test.sql> for more examples of usage.
82    
83  =head1 Usage of pgest from SQL  =head1 Usage of pgest from SQL
84    
85  C<pgest> PostgreSQL function has two different prototypes (number of arguments) depending on usage.  C<pgest> PostgreSQL function tries to mimic usage of normal database tables (with support for attribute filtering, limit and offset) in following way:
86    
87          SELECT          SELECT
88                  -- columns to return (defined later)                  -- columns to return (defined later)
89                  id,title,size                  id,title,size
90          FROM pgest(          FROM pgest(
91                  -- path to index OR URL to node, user-name and password                  -- node URI, login, password and depth of search
                 -- you will need JUST ONE of following two lines, depending  
                 -- on your usage described below, for direct access  
                 '/full/path/to/casket',  
                 -- or for node API specify node URI, login, password  
                 -- and depth of search  
92                  'http://localhost:1978/node/trivia', 'admin', 'admin', 42,                  'http://localhost:1978/node/trivia', 'admin', 'admin', 42,
93                  -- query                  -- query
94                  'blade runner',                  'blade runner',
# Line 141  C<pgest> PostgreSQL function has two dif Line 108  C<pgest> PostgreSQL function has two dif
108                  id text, title text, size text                  id text, title text, size text
109          );          );
110    
111    You should note that Hyper Estraier uses UTF-8 encoding, while your
112    PostgreSQL installation might use different encoding. To fix that, use
113    C<convert> function in PostgreSQL to convert encodings.
114    
115    =head2 Using index via C<estmaster> server process
116    
117    This is default and recommended way to use C<pgest> functionality. In this
118    case, C<pgest> will use node API and access index through C<estmaster>
119    process which should be running on (local or remote) machine.
120    
121    This will remove database opening overhead, at a cost of (small) additional network
122    traffic. However, you can have Hyper Estraier C<estmaster> process running on
123    different machine or update index while doing searches, so benefits of this
124    approach are obvious.
125    
126  =head2 Accessing database directly  =head2 Accessing database directly
127    
128  If you want to access database directly (without running C<estmaster> process), first argument is full path to database file.  B<Please note that direct access to database is depreciated.> As such, it's
129    not stated in example, and it's kept just for backward compatibility, but it
130    will probably be removed in future versions of C<pgest>.
131    
132    If you want to access database directly (without running C<estmaster> process), you
133    have to replace node URI, login, password and depth with full path to database file.
134    
135  Have in mind that C<postgres> user under which PostgreSQL is running must  Have in mind that C<postgres> user under which PostgreSQL is running must
136  have read permission on Hyper Estraier database files.  have read permission on Hyper Estraier database files.
# Line 152  This will work a bit faster on really sm Line 139  This will work a bit faster on really sm
139  index grows bigger, you might consider using node API to remove overhead of  index grows bigger, you might consider using node API to remove overhead of
140  database opening on each query.  database opening on each query.
141    
 B<Please note that direct access to database is depriciated.>  
   
 =head2 Using index via C<estmaster> server process  
   
 If first argument is URL to node (like C<http://localhost:1978/node/trivia>)  
 and there are two additional parameters (user-name and password) after it,  
 C<pgest> will use node API and access index through C<estmaster> process which should be running on (local or remote) machine.  
   
 This will remove database opening overhead, at a cost of additional network  
 traffic. However, you can have Hyper Estraier C<estmaster> process running on  
 different machine or update index while doing searches, so benefits of this  
 approach are obvious.  
   
142  =head1 Who wrote this?  =head1 Who wrote this?
143    
144  Hyper Estraier is written by Mikio Hirabayashi.  Hyper Estraier is written by Mikio Hirabayashi.

Legend:
Removed from v.51  
changed lines
  Added in v.54

  ViewVC Help
Powered by ViewVC 1.1.26