Install Full Text Search

Install OpenFTS module

If you want full text search, and you are running PostGreSQL, install this module to support FTS. Do this step after you have installed both PostGreSQL and Aolserver. You will need the openfts tarball in /tmp.

  1. Install Tsearch. This is a PostGreSQL module that OpenFTS requires.

    [root@yourserver root]# su - postgres
    [postgres@yourserver pgsql]$ cd /usr/local/src/postgresql-7.2.4/contrib/tsearch/
    [postgres@yourserver tsearch]$ make
    sed 's,MODULE_PATHNAME,$libdir/tsearch,g' tsearch.sql.in >tsearch.sql
    /usr/bin/flex  -8 -Ptsearch_yy -o'parser.c' parser.l
    (many lines omitted)
    rm -f libtsearch.so
    ln -s libtsearch.so.0.0 libtsearch.so
    [postgres@yourserver tsearch]$ make install
    mkdir /usr/local/pgsql/share/contrib
    mkdir /usr/local/pgsql/doc/contrib
    (2 lines omitted)
    /bin/sh ../../config/install-sh -c -m 755 libtsearch.so.0.0 /usr/local/pgsql/lib/tsearch.so
    [postgres@yourserver tsearch]$ exit
    logout
    
    [root@yourserver root]#
    
    su - postgres
    cd /usr/local/src/postgresql-7.2.4/contrib/tsearch
    make
    make install
    exit
  2. Unpack the OpenFTS tarball and compile and install the driver.

    [root@yourserver root]# cd /usr/local/src
    [root@yourserver src]# tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
    [root@yourserver src]# cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
    [root@yourserver Search-OpenFTS-tcl-0.3.2]# ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/
    checking prefix... /usr/local
    checking for gcc... gcc
    (many lines omitted)
    configure: creating ./config.status
    config.status: creating Makefile.global
    [root@yourserver Search-OpenFTS-tcl-0.3.2]# make
    (cd parser; make all)
    make[1]: Entering directory `/usr/local/src/Search-OpenFTS-tcl-0.3.2/parser'
    (many lines omitted)
    packages provided were {Lingua::Stem::Snowball 0.3.2}
    processed fts_base_snowball.tcl
    [root@yourserver Search-OpenFTS-tcl-0.3.2]# cd aolserver
    [root@yourserver aolserver]# make
    gcc -c -fPIC  -DPACKAGE=\"OPENFTS\" -DVERSION=\"0.3.2\" -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STR
    (many lines omitted)
    n_stem.o italian_stem.o norwegian_stem.o portuguese_stem.o russian_stem.o nsfts.o  -o nsfts.so
    [root@yourserver aolserver]# cp nsfts.so /usr/local/aolserver/bin/
    [root@yourserver aolserver]#
    
    cd /usr/local/src 
    tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
    cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
    ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/
    make
    cd aolserver
    make
    cp nsfts.so /usr/local/aolserver/bin
    
  3. Build some supplemental modules.

    [root@yourserver aolserver]# cd /usr/local/src/Search-OpenFTS-tcl-0.3.2
    [root@yourserver Search-OpenFTS-tcl-0.3.2]# cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.2.4/contrib
    [root@yourserver Search-OpenFTS-tcl-0.3.2]# cd /usr/local/src/postgresql-7.2.4/contrib/pgsql_contrib_openfts
    [root@yourserver pgsql_contrib_openfts]# make
    sed 's,MODULE_PATHNAME,$libdir/openfts,g' openfts.sql.in >openfts.sql
    gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -fpic -I. -I../../src/include   -c -o openfts.o openfts.c
    gcc -shared -o openfts.so openfts.o
    rm openfts.o
    [root@yourserver pgsql_contrib_openfts]# su postgres
    [postgres@yourserver pgsql_contrib_openfts]$ make install
    /bin/sh ../../config/install-sh -c -m 644 openfts.sql /usr/local/pgsql/share/contrib
    /bin/sh ../../config/install-sh -c -m 755 openfts.so /usr/local/pgsql/lib
    /bin/sh ../../config/install-sh -c -m 644 ./README.openfts /usr/local/pgsql/doc/contrib
    [postgres@yourserver pgsql_contrib_openfts]$ exit
    [root@yourserver pgsql_contrib_openfts]#
    
    cd /usr/local/src/Search-OpenFTS-tcl-0.3.2
    cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.2.4/contrib
    cd /usr/local/src/postgresql-7.2.4/contrib/pgsql_contrib_openfts
    make
    su postgres
    make install
    exit

Install OpenFTS prerequisites in PostGreSQL instance

If you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostGreSQL OpenFTS module and prerequisites.)

[service0@yourserver service0]$ /usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/tsearch/tsearch.sql
BEGIN
CREATE
(many lines omitted)
INSERT 0 1
COMMIT
[service0@yourserver service0]$ /usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/pgsql_contrib_openfts/openfts.sql
CREATE
CREATE
[service0@yourserver service0]$
/usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/tsearch/tsearch.sql
/usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/pgsql_contrib_openfts/openfts.sql

Enable OpenFTS in config.tcl

If you have installed OpenFTS, you can enable it for this service. Uncomment this line from config.tcl. (To uncomment a line in a tcl file, remove the # at the beginning of the line.)

#ns_param   nsfts           ${bindir}/nsfts.so

Install Full Text Search Engine

  1. Click Package Manager on the right side of the default home page. If prompted, log in with the account and password you entered during install.

  2. Click on the Install packages link.

  3. On the next screen, after it loads, click on Uncheck all boxes, then click the checkbox next to OpenFTS Driver 4.2. Then click Next.

  4. Click Install Packages

  5. Restart the service.

    [service0@yourserver service0]$ svc -t /service/service0
    [service0@yourserver service0]$
  6. Wait a minute, then browse back to the home page.

  7. Click on Site Map on the top right side of the screen.

  8. Mount the OpenFTS Full Text Search Engine in the site map.

    1. Click the new sub folder link on the "/" line, the first line under Main Site:/.

    2. Type openfts and click New.

    3. On the new openfts line, click the mount link.

    4. Click OpenFTS Driver.

    5. On the openfts line, click set parameters.

    6. Change openfts_tcl_src_path to /usr/local/src/Search-OpenFTS-tcl-0.3.2/ and click Set Parameters

  9. Mount the Search interface in the site map.

    1. Click the new sub folder link on the Main Site line.

    2. Type search and click New.

    3. Click the new application link on the search line.

    4. Type search where it says untitled, choose search from the drop-down list, and click New.

  10. Restart the service.

    [service0@yourserver service0]$ svc -t /service/service0
    [service0@yourserver service0]$
  11. Wait a minute, then click on Main Site at the top of the page.

  12. Initialize the OpenFTS Engine. This creates a set of tables in the database to support FTS.

    Near the bottom of the page, click on the OpenFTS Driver link. Click on Administration. Click on Initialize OpenFTS Engine. Click Initialize OpenFTS Engine.

  13. Add the FTS Engine service contract

    1. Click on the Main Site.

    2. Click on the ACS Service Contract link near the bottom of the home page.

    3. On the FtsEngineDriver line, click Install.

  14. Restart the service.

    [service0@yourserver service0]$ svc -t /service/service0
    [service0@yourserver service0]$
  15. Test FTS. (INCOMPLETE). Add a package that supports search,like "note," add some content, and search for it.

View comments on this page at openacs.org