NAME

Circa::Indexer - provide functions to administrate Circa, a www search engine running with Mysql

SYNOPSIS

 use Circa::Indexer;
 my $indexor = new Circa::Indexer;
 
 if (!$indexor->connect_mysql($user,$pass,$db)) 
	{die "Erreur à la connection MySQL:$DBI::errstr\n";}
	
 $indexor->create_table_circa;
 
 $indexor->drop_table_circa;
 
 $indexor->addSite("http://www.alianwebserver.com/",
                   'alian@alianwebserver.com',
                   "Alian Web Server");
                   
 my ($nbIndexe,$nbAjoute,$nbWords,$nbWordsGood) = $indexor->parse_new_url(1);
 print 	"$nbIndexe pages indexées,"
 	"$nbAjoute pages ajoutées,"
 	"$nbWordsGood mots indexés,"
 	"$nbWords mots lus\n";

 $indexor->update(30,1);

Look in admin.pl,admin.cgi,admin_compte.cgi

DESCRIPTION

This is Circa::Indexer, a module who provide functions to administrate Circa, a www search engine running with Mysql. Circa is for your Web site, or for a list of sites. It indexes like Altavista does. It can read, add and parse all url's found in a page. It add url and word to MySQL for use it at search.

This module can:

Add url
Index words
Parse url, and so on.
Provide routine to administrate present url

Remarques:

- This file are not added : doc,zip,ps,gif,jpg,gz,pdf,eps,png,
  deb,xls,ppt,class,GIF,css,js,wav,mid
- Weight for each word is in hash $ConfigMoteur

How it's work ?

Circa parse html document. convert it to text. It count all word found and put result in hash key. In addition of that, it read title, keywords, description and add a weight to all word found.

Example:

my %ConfigMoteur=(
       'facteur_keyword'       =>15,
       'facteur_description'   =>10,
       'facteur_titre'         =>10,
       'facteur_full_text'     =>1,
       'niveau_max'		=>7,
       'nb_min_mots'           =>2
       );

<html>
<head>
<meta name="KeyWords"
CONTENT="informatique,computing,javascript,CGI,perl">
<meta name="Description" CONTENT="Rubriques Informatique (Internet,Java,Javascript, CGI, Perl)">
<title>Alian Web Server:Informatique,Société,Loisirs,Voyages,Expression</title>
</head>
<body>
different word: cgi, perl, cgi
</body>
</html>

After parsing I've a hash with that:

$words{'informatique'}= 15 + 10 + 10 =35
$words{'cgi'} = 15 + 10 +1
$words{'different'} = 1

Words is add to database if total found is > $ConfigMoteur{'nb_min_mots'} (2 by default). But if you set to 1, database will grow very quicly but allow you to perform very exact search with many worlds so you can do phrase searches. But if you do that, think to take a look at size of table relation.

After page is read, it's look into html link. And so on. At each time, the level grow to one. So if < to $Config{'niveau_max'}, url is added.

VERSION

$Revision: 1.8 $

Manipulation des attributs

size_max($size)

Get or set size max of file read by indexer (For avoid memory pb).

set_agent

port_mysql($port)

Get or set the MySQL port

host_indexed($host)

Get or set the host indexed.

proxy($adr_proxy)

Positionne le proxy a utiliser le cas écheant.

$adr_proxy : Ex: 'http://proxy.sn.no:8001/'

prefix_table

Get or set the prefix for table name for use Circa with more than one time on a same database

connect_mysql($user,$password,$db,$server)

$user     : User MySQL
$password : Password MySQL
$db       : Database MySQL
$server   : Adr IP MySQL

Connect Circa to MySQL. Return 1 on succes, 0 else

close_connect

Close connection to MySQL

Administrative globales methods

addSite($url,$email,$titre,$categorieAuto,$cgi,$rep,$file);

Ajoute le site d'url $url, responsable d'adresse mail $email à la bd de Circa

addLocalSite($url,$email,$titre,$local_url,$path,$urlRacine,$categorieAuto,$cgi,$rep,$file);

Add a local $url

updateUrl($compte,$id,$url,$urllocal,$titre,$description,$langue, $categorie,$browse_categorie,$parse,$valide,$niveau,$last_check,$last_update)

Update url $id on table $compte

parse_new_url($idp)

Parse les pages qui viennent d'être ajoutée. Le programme va analyser toutes les pages dont la colonne 'parse' est égale à 0.

Retourne le nombre de pages analysées, le nombre de page ajoutées, le nombre de mots indexés.

update($xj,$idp)

Reindexe les sites qui n'ont pas été mis à jour depuis plus de $xj jours

create_table_circa

Cree la liste des tables necessaires à Circa:

- categorie   : Catégories de sites
- links       : Liste d'url
- responsable : Lien vers personne responsable de chaque lien
- relations   : Liste des mots / id site indexes
- inscription : Inscriptions temporaires

drop_table_circa

Detruit les tables de Circa

drop_table_circa_id

Detruit les tables de Circa pour l'utilisateur id

create_table_circa_id

Cree la liste des tables necessaires à Circa:

- categorie   : Catégories de sites
- links       : Liste d'url
- relations   : Liste des mots / id site indexes
- stats 	: Liste des requetes

Fonctions HTML

start_classic_html

Affiche le debut de document (<head></head>)

get_liste_liens($id)

Rend un buffer contenant une balise select initialisée avec les données de la table links responsable $id

get_liste_liens_a_valider($id)

Rend un buffer contenant une balise select initialisée avec les données de la table links responsable $id liens non valides

get_liste_site

Rend un buffer contenant une balise select initialisée avec les données de la table responsable

get_liste_categorie($id)

Rend un buffer contenant une balise select initialisée avec les données de la table categorie responsable $id

fill_template($masque,$vars)

$masque : Chemin du template
$vars : reference du hash des noms/valeurs à substituer dans le template

Rend le template avec ses variables substituées. Ex: si $$vars{age}=12, et que le fichier $masque contient la chaine:

J'ai <? $age ?> ans, 

la fonction rendra

J'ai 12 ans,

Methode administration par compte

admin_compte($compte)

Retourne une liste d'elements se rapportant au compte $compte:

$responsable	: Adresse mail du responsable
$titre		: Titre du site pour ce compte
$nb_page	: Nombre de page pour ce site
$nb_words      : Nombre de mots indexés
$last_index	: Date de la dernière indexation
$nb_requetes	: Nombre de requetes effectuées sur ce site
$racine	: 1ere page inscrite

Retourne la reference vers un hash representant la liste des $max mots les plus présents dans la base de reponsable $id

delete_url($compte,$id_url)

Supprime le lien $id_url de la table $compte/relation et $compte/links

valide_url($compte,$id_url)

Supprime le lien $id_url de la table $compte/relation et $compte/links

delete_categorie($compte,$id)

Supprime la categorie $id pour le compte de responsable $compte et tous les liens et relation qui sont dans cette categorie

rename_categorie($compte,$id,$nom)

Renomme la categorie $id pour le compte de responsable $compte en $nom

deplace_categorie($compte,$id1,$id2)

Move url from one categorie to another

inscription($email,$url,$titre)

Inscrit un site dans une table temporaire

Méthodes privées

look_at ($url,$idc,$idr,$lastModif,$url_local)

Ajoute les liens definis à l'URL $url à la base de donnée. Indexe les mots de chaque page

$url : Url de la page à indexer
$idc : Id de l'url dans la table links
$idr : Id du responsable de cette url
$lastModif : Ne parse pas la page si elle n'a pas été mis à jour 
             depuis cette date (facultatif)
$url_local : Chemin local pour accéder au fichier (facultatif)

Retourne (-1,0) si l'adresse est invalide, le nombre de liens trouvés dans la page ainsi que le nombre de mots trouves sinon.

add_site($url,$idMan,[$local_url],[$browse_categorie],[$niveau],[$categorie])

Ajoute un site à la table links.

$url   : Url de la page à ajouter
$idMan : Id dans la table responsable du responsable de ce site

drop_site($id)

Supprime un site de la table personne. Cela supprime egalement les elements de la table links et relation qui appartiennent à ce site

$id   : Id du site

get_meta($entete)

Parse et rend les meta-mots-clef et la meta-description de la page HTML contenu dans $entete

analyse_data($data,$facteur,%l)

Recupere chaque mot du buffer $data et lui attribue une frequence d'apparition. Les resultats sont ranges dans le tableau associatif passé en paramètre. Les résultats sont rangés sous la forme %l=('mots'=>facteur).

$data : buffer à analyser
$facteur : facteur à attribuer à chacun des mots trouvés
%l : Tableau associatif où est rangé le résultat

Retourne la référence vers le hash

getParent($id,%tab)

Rend la chaine correspondante à la catégorie $id avec ses rubriques parentes

get_first($requete)

Retourne la premiere ligne du resultat de la requete $requete sous la forme d'un tableau

AUTHOR

Alain BARBET alian@alianwebserver.com

1 POD Error

The following errors were encountered while parsing the POD:

Around line 66:

Non-ASCII character seen before =encoding in 'à'. Assuming CP1252