[ Présentation | Installation | Configuration | Utilisation ]

Dernière modification 12.11.00

Mettre en place un moteur de recherche Ht://Dig

Présentation

Ht://Dig est un moteur de recherche performant pour votre site intranet, il peut mettre en index vos sites web internes mais aussi ceux se trouvant sur le net. Il marche sur plusieurs plate formes, dont évidemment linux. Sous Linux j'ai eu des problèmes de compilation liés aux headers C++, mais l'installation et la configuration est strictement identique.
Dans la suite de ma page je présente un site intranet ayant pour adresse www.funix.kervao.fr et tournant sous Apache. On va réaliser un moteur de recherche pour ce site à l'aide de Ht://Dig accessible à partir de ce même site. La configuration par défaut est très satisfaisante, vous pouvez néanmoins consulter la doc livrée avec le package qui détaille toutes les subtilités de la configuration.

[Retour haut de la page]

Installation

On va installer htdig à l'aide de cygwin. On récupérera les sources à l'adresse http://www.htdig.org, elle se présente sous la forme d'un tarball htdig-3_1_5_tar.tar.gz de 1,9Mo, qu'on décompressera en tapant dans un shell cygwin

tar xvfz htdig-3_1_5_tar.tar.gz

Cela va créer un répertoire  htdig-3.1.5 dans lequel on tapera :

./configure

Puis

make

Et enfin

make install

Cela va créer un répertoire /opt/www avec les sous répertoires cgi-bin, htdig et htdocs. Voici les binaires zippés, avec aucune garantie de fonctionnement ! J'aimerai bien que quelqu'un me dise que ça marche ou pas chez lui.

[Retour haut de la page]

Configuration

On trouvera le fichier de configuration sous /opt/www/htdig/conf, il se nomme  htdig.conf, voici les lignes à modifier éventuellement
 

# définition de l'emplacement où se trouveront les bases de données sur le site intranet
# attention, elles peuvent être assez grosses, pour info pour mon site intranet contenant mes pages
# www.funix.org les bases font un total de 12Mo !
database_dir:           /opt/www/htdig/db

# Définition de l'adresse à partir de laquelle htdig doit construire ses bases de données
# mettez ici l'URL de votre intranet
# vous pouvez éventuellement mettre l'URL de n'importe quel site sur internet
start_url:              http://www.funix.kervao.fr/

# votre site peut contenir des liens vers des sites extérieurs, cette variable permet de
# limiter la rechercher à des pages de votre domaine
limit_urls_to:)         ${start_url}

# Définition des pages à ne pas indexer, ce sont donc celles qui sont dans
# http://www.funix.kervao.fr/cgi-bin par exemple ici
exclude_urls:%)         /cgi-bin/ .cgi
 

# fichiers qui seront ignorés pendant l'indexation
bad_extensions:         .wav .gz .z .sit .au .zip .tar .hqx .exe .com .gif \
                .jpg .jpeg .aiff .class .map .ram .tgz .bin .rpm .mpg .mov .avi

# adresse email de l'administrateur
maintainer:             olivier@kervao.fr

# Par défaut un extrait de chaque page est archivé dans la base, vous pouvez limiter
# évidemment cette taille
max_head_length:        10000

# si vous récupérez des pages sur internet (indexation de sites sur internet) vous pouvez aussi
# limiter la taille des pages à récupérer
max_doc_size:%)         200000

#
# Most people expect some sort of excerpt in results. By default, if the
# search words aren't found in context in the stored excerpt, htsearch shows
# the text defined in the no_excerpt_text attribute:
# (None of the search words were found in the top of this document.)
# This attribute instead will show the top of the excerpt.
#
no_excerpt_show_top:    true

#
# Depending on your needs, you might want to enable some of the fuzzy search
# algorithms.  There are several to choose from and you can use them in any
# combination you feel comfortable with.  Each algorithm will get a weight
# assigned to it so that in combinations of algorithms, certain algorithms get
# preference over others.  Note that the weights only affect the ranking of
# the results, not the actual searching.
# The available algorithms are:
#       exact
#       endings
#       metaphone
#       prefix
#       soundex
#       synonyms
# By default only the "exact" algorithm is used with weight 1.
# Note that if you are going to use the endings, metaphone, soundex,
# or synonyms algorithms, you will need to run htfuzzy to generate
# the databases they use.
#
search_algorithm:       exact:1 synonyms:0.5 endings:0.1
#
# The following are the templates used in the builtin search results
# The default is to use compiled versions of these files, which produces
# slightly faster results. However, uncommenting these lines makes it
# very easy to change the format of search results.
# See <http://www.htdig.org/hts_templates.html for more details.
#
# template_map: Long long ${common_dir}/long.html \
#               Short short ${common_dir}/short.html
# template_name: long

#
# The following are used to change the text for the page index.
# The defaults are just boring text numbers.  These images spice
# up the result pages quite a bit.  (Feel free to do whatever, though)
#
next_page_text:         <img src="/htdig/buttonr.gif" border="0" align="middle"
width="30" height="30" alt="next">
no_next_page_text:
prev_page_text:         <img src="/htdig/buttonl.gif" border="0" align="middle"
width="30" height="30" alt="prev">
no_prev_page_text:
page_number_text:       '<img src="/htdig/button1.gif" border="0" align="middle" width="30" height="30" alt="1">' \
                        '<img src="/htdig/button2.gif" border="0" align="middle" width="30" height="30" alt="2">' \
                        '<img src="/htdig/button3.gif" border="0" align="middle" width="30" height="30" alt="3">' \
                        '<img src="/htdig/button4.gif" border="0" align="middle" width="30" height="30" alt="4">' \
                        '<img src="/htdig/button5.gif" border="0" align="middle" width="30" height="30" alt="5">' \
                        '<img src="/htdig/button6.gif" border="0" align="middle" width="30" height="30" alt="6">' \
                        '<img src="/htdig/button7.gif" border="0" align="middle" width="30" height="30" alt="7">' \
                        '<img src="/htdig/button8.gif" border="0" align="middle" width="30" height="30" alt="8">' \
                        '<img src="/htdig/button9.gif" border="0" align="middle" width="30" height="30" alt="9">' \
                        '<img src="/htdig/button10.gif" border="0" align="middle" width="30" height="30" alt="10">'

# To make the current page stand out, we will put a border arround the
# image for that page.
#
no_page_number_text:    '<img src="/htdig/button1.gif" border="2" align="middle" width="30" height="30" alt="1">' \
                        '<img src="/htdig/button2.gif" border="2" align="middle" width="30" height="30" alt="2">' \
                        '<img src="/htdig/button3.gif" border="2" align="middle" width="30" height="30" alt="3">' \
                        '<img src="/htdig/button4.gif" border="2" align="middle" width="30" height="30" alt="4">' \
                        '<img src="/htdig/button5.gif" border="2" align="middle" width="30" height="30" alt="5">' \
                        '<img src="/htdig/button6.gif" border="2" align="middle" width="30" height="30" alt="6">' \
                        '<img src="/htdig/button7.gif" border="2" align="middle" width="30" height="30" alt="7">' \
                        '<img src="/htdig/button8.gif" border="2" align="middle" width="30" height="30" alt="8">' \
                        '<img src="/htdig/button9.gif" border="2" align="middle" width="30" height="30" alt="9">' \
                        '<img src="/htdig/button10.gif" border="2" align="middle" width="30" height="30" alt="10">'

# local variables:
# mode: text
# eval: (if (eq window-system 'x) (progn (setq font-lock-keywords (list '("^#.*" . font-lock-keyword-face) '("^[a-zA-Z][^ :]+" . font-lock-function-name-face) '("[+$]*:" . font-lock-comment-face) )) (font-lock-mode)))
# end:

On va maintenant explorer le site web et récupérer les pages en tapant dans un shell cygwin

/opt/www/bin/htdig -ivs

Ne vous inquiétez pas si votre site est écrit en PHP, ça marche aussi très bien.
L'option -i permet d'effacer les recherches précédentes et de repartir de zéro, l'option v est l'option "verbeuse". On crée à présent l'index en tapant :

/opt/www/bin/htmerge -vs

Pour info avec l'option -m les tables sont simplement mises à niveau.

Maintenant on va copier le fichier /opt/www/cgi-bin/htsearch dans le répertoire cgi-bin de votre serveur apache.  On copie aussi l'ensemble du répertoire /opt/www/htdocs/htdig dans le répertoire  désignés par la variable DocumentRoot du fichier de configuration d'Apache (généralement htdocs).

Vous allez copier le répertoire /opt/www/htdocs/htdig dans le répertoire racine contenant votre site intranet. Dans ce même répertoire éditez le fichier search.html, au lieu de :

action="/cgi-bin/htsearch"

Vous mettrez

action="http://serveur-web/cgi-bin/htsearch"

A la place de serveur-web, vous devez mettre le nom du serveur web désigné par la variable ServerName du fichier de configuration d'Apache. Pour terminer on va copier cygwin1.dll et libz.dll se trouvant dans le répertoire bin de cygwin dans le répertoire c:\windows.

[Retour haut de la page]

Utilisation

A partir de votre navigateur préféré au niveau de l'URL tapez:

URL: http://www.funix.kervao.fr/htdig/search.html
 

Voilà le résultat de la recherche

Les pages sont classées suivant qu'elles collent plus ou moins avec la recherche, mais vous pouvez éventuellement modifier le type de tri (Sort by). Pour info on utilise un modèle de présentation des résultats se trouvant sous /opt/www/htdig/common avec

header.html qui précède la liste des résultats
footer.html qui suit la liste des résultats
nomatch.html quand on ne trouve rien
syntax.html en cas d'erreur de syntaxe
wrapper.html entête et pied de page
 
 
[Retour page d'accueil FUNIX] [Retour haut de la page]