Phpbb et tables de recherche
9 messages • Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
Phpbb et tables de recherche
Bonjour,
j'ai un forum phpbb et suis donc confronté au probleme des tables search de phpbb.
J'ai plusieurs questions:
1) Excepté la place prise, quel est l'effet de ces tables sur les performances du forum si on les optimises de manière régulière
2) Quel stratégie avez vous adopter?
Pour ma part:
- Utilisation du fichier stopwords pour limiter le nombre de mots (4000 mots dans ce fichier)
- Utilisation d'un script qui élimine de la table les mots présents dans le fichier stopwords
Par contre, j'ai l'impression que mon fichier stopwords fait planter phpbb lors des réponses (peut etre à cause de la présence d'apostrophe dans certains mots?).
Et vous?
Merci
François
j'ai un forum phpbb et suis donc confronté au probleme des tables search de phpbb.
J'ai plusieurs questions:
1) Excepté la place prise, quel est l'effet de ces tables sur les performances du forum si on les optimises de manière régulière
2) Quel stratégie avez vous adopter?
Pour ma part:
- Utilisation du fichier stopwords pour limiter le nombre de mots (4000 mots dans ce fichier)
- Utilisation d'un script qui élimine de la table les mots présents dans le fichier stopwords
Par contre, j'ai l'impression que mon fichier stopwords fait planter phpbb lors des réponses (peut etre à cause de la présence d'apostrophe dans certains mots?).
Et vous?
Merci
François
J'utilise aussi un fichier stopwords, avec les chiffres etc. Mais j'ai parfois des erreurs lorsque l'on poste, une erreur en rapport justement avec la fonction de recherche.
Je suis donc preneur si l'un de vous a une solution pour réduire la taille des tables de recherche...
Je suis donc preneur si l'un de vous a une solution pour réduire la taille des tables de recherche...
-

a.nonyme4ever - WRInaute passionné

- Messages: 538
- Inscription: Ven Fév 20, 2004 16:51
Re: Phpbb et tables de recherche
Suede a écrit:Bonjour,
j'ai un forum phpbb et suis donc confronté au probleme des tables search de phpbb.
J'ai plusieurs questions:
1) Excepté la place prise, quel est l'effet de ces tables sur les performances du forum si on les optimises de manière régulière
2) Quel stratégie avez vous adopter?
Idem, ms pour ma part c'est surtout un souci de place car mon hebergeur me conseille très fortement une BDD de moins de 30Mo et je les frole.
Avez-vous des propositions et des solutions svp?
Dans mon cas, je n'ai pas de probleme de place pour la base de donnée (excepté que ca devient plus pénible à dumper) donc c'est surtout une question de performance.
J'avais cru entendre dire qu'une fonction recherche qui passerait directement par une requete MySQL sur les tables "post_text" serait plus efficace (et non pas par les tables recherche). Est-ce que c'est vrai? Est-ce qu'il y a un mod de phpbb qui le fait ?
François
J'avais cru entendre dire qu'une fonction recherche qui passerait directement par une requete MySQL sur les tables "post_text" serait plus efficace (et non pas par les tables recherche). Est-ce que c'est vrai? Est-ce qu'il y a un mod de phpbb qui le fait ?
François
-

a.nonyme4ever - WRInaute passionné

- Messages: 538
- Inscription: Ven Fév 20, 2004 16:51
ça serait pas mal interessant en effet et ça soulagerait ma BDD 
-

a.nonyme4ever - WRInaute passionné

- Messages: 538
- Inscription: Ven Fév 20, 2004 16:51
lothar a écrit:J'utilise aussi un fichier stopwords, avec les chiffres etc. Mais j'ai parfois des erreurs lorsque l'on poste, une erreur en rapport justement avec la fonction de recherche.
Je suis donc preneur si l'un de vous a une solution pour réduire la taille des tables de recherche...
Serait-il possible d'avoir votre fichier stopword svp? Merci d'avance!
Je ne sais pas si c'est conseillé. Ca peut surcharger ton fichier de maniere inutile. Je ne pense pas que les variantes orthographiques de Stockholm soit d'un grand intéret pour ton forum.
Pour se créer un fichier stopword :
http://www.phpbb.com/kb/article.php?article_id=30
egalement traduit en français ici :http://www.portail-maker.com/phpbb/viewtopic-196.html (le lien anglais est plus complet)
permet d'avoir les 100 mots les plus utilisés. Pour ma part, j'ai supprimé la clause limite et chargé le tout dans un fichier xls. Je trie sur plusieurs facteurs : fréquence du mot, taille du mot, les deux. Ensuite, j''établis ma liste à partir de ce fichier et je la colle dans search_stopwords.txt .
J'élimine de la base les mots du stopwords grace au script décrit dans le lien ci-dessus (et dans pas mal d'autres)
Au passage, j'ai trouvé la réponse à ma question :
François
Pour se créer un fichier stopword :
http://www.phpbb.com/kb/article.php?article_id=30
egalement traduit en français ici :http://www.portail-maker.com/phpbb/viewtopic-196.html (le lien anglais est plus complet)
- Code: Tout sélectionner
SELECT ls.word_id, ls.word_text, COUNT(wm.word_id) as entries FROM `phpbb_search_wordlist` as ls LEFT JOIN `phpbb_search_wordmatch` as wm ON ls.word_id=wm.word_id GROUP BY wm.word_id ORDER BY entries DESC LIMIT 0,100;
permet d'avoir les 100 mots les plus utilisés. Pour ma part, j'ai supprimé la clause limite et chargé le tout dans un fichier xls. Je trie sur plusieurs facteurs : fréquence du mot, taille du mot, les deux. Ensuite, j''établis ma liste à partir de ce fichier et je la colle dans search_stopwords.txt .
J'élimine de la base les mots du stopwords grace au script décrit dans le lien ci-dessus (et dans pas mal d'autres)
- Code: Tout sélectionner
<?php
//***** reduce_my_searchtables_with_stopwords.php ****//
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/functions_search.'.$phpEx);
// Start session management
$userdata = session_pagestart($user_ip, PAGE_SEARCH);
init_userprefs($userdata);
// End session management
$stopwords_array = file($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . "/search_stopwords.txt");
$liste='';
foreach($stopwords_array as $curr_word)
{
$liste .= ( ( $liste != '' ) ? ', ' : '' ) ."'".trim($curr_word)."'";
}
$sql = "SELECT word_id
FROM " . SEARCH_WORD_TABLE . "
WHERE word_text IN ($liste)";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain common word list', '', __LINE__, __FILE__, $sql);
}
$common_word_id = '';
while ( $row = $db->sql_fetchrow($result) )
{
$common_word_id .= ( ( $common_word_id != '' ) ? ', ' : '' ) . $row['word_id'];
}
if ($common_word_id=='') message_die(GENERAL_ERROR,'None of the words in the list are in your search_tables.<br>Note: This could also mean the list is empty ;)');
//echo '>'.trim($curr_word)."<<br>";
//echo $liste .'<br>'. $common_word_id;
//exit;
$sql = "DELETE FROM " . SEARCH_WORD_TABLE . "
WHERE word_id IN ($common_word_id)";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete word match entry', '', __LINE__, __FILE__, $sql);
}
$sql = "OPTIMIZE TABLE " . SEARCH_WORD_TABLE;
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not optimize', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . SEARCH_MATCH_TABLE . "
WHERE word_id IN ($common_word_id)";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete word match entry', '', __LINE__, __FILE__, $sql);
}
$sql = "OPTIMIZE TABLE " . SEARCH_MATCH_TABLE;
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not pütimize', '', __LINE__, __FILE__, $sql);
}
message_die(GENERAL_MESSAGE,'<b>Done!</b><br><br>The following list-entries have been removed from your searchtables:'.$liste);
//echo $liste .'<br>'. $common_word_id;
?>
Au passage, j'ai trouvé la réponse à ma question :
If you have more than enough db-space then don't mind reading this HowTo till the end. It will be of no/little relevance to you..
François
-

a.nonyme4ever - WRInaute passionné

- Messages: 538
- Inscription: Ven Fév 20, 2004 16:51
Suede a écrit:Je ne sais pas si c'est conseillé. Ca peut surcharger ton fichier de maniere inutile. Je ne pense pas que les variantes orthographiques de Stockholm soit d'un grand intéret pour ton forum.[...]
Merci beaucoup pour ton coup de main!
Par contre je n'ai pas compris en quoi :
If you have more than enough db-space then don't mind reading this HowTo till the end. It will be of no/little relevance to you.
Répondais à ta question :
Dans mon cas, je n'ai pas de probleme de place pour la base de donnée (excepté que ca devient plus pénible à dumper) donc c'est surtout une question de performance.
J'avais cru entendre dire qu'une fonction recherche qui passerait directement par une requete MySQL sur les tables "post_text" serait plus efficace (et non pas par les tables recherche). Est-ce que c'est vrai? Est-ce qu'il y a un mod de phpbb qui le fait ?
Il ne parle pas de la solution de recherche sur la table post_text, mais de sa solution stopwords non?
Pour le fichier stop_words, j'ai éliiminé en premier lieu tous les chiffres seuls (0 à 9), puis tout l'alphabet, puis toutes les conjonctions ( Mais ou et donc or ni car ).
Mais je cherche toujours à optimiser ces tables de recherche...
Mais je cherche toujours à optimiser ces tables de recherche...
9 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- forum phpbb : les tables session ralentissent, cron pour les
- [Mysql] Recherche FULL-TEXT sur plusieurs tables
- Recherche match avec clefs fulltext sur plusieurs tables
- Recherche mod PHPBB
- Recherche MOD pour phpbb
- [phpBB] Optimiser le système de recherche
- phpbb - Comment fonctionne le moteur de recherche ?
- Recherche mod phpbb : avertir le modérateur
- Meilleur moteur de recherche pour phpBB ?
- recherche phpbb mod bbcode uniquement pour les membres
- Recherche mod phpbb pour une version light du forum
- Faire une recherche en un clic d'URL sur phpBB
- Recherche un MOD "spécial" pour phpBB
- Requete 2 tables
- Joindre deux tables
- Logiciel de référencement AgentWebRanking
AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés. - Transformer des citations en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum