begin process at 2012 05 26 22:39:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Moteur de recherche avancé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Moteur de recherche avancé

lundi 4 septembre 2006 à 10:41:45 | Moteur de recherche avancé

Blacknight91titi

Membre Club
Bonjour,

Pour mon site je réalise un moteur de recherche interne.
Jusqu'a la version 3 de celui ci tout allait bien, c'était un moteur de recherche pluto sympa mais sans plus.
Pour la nouvelle version je souhaite optimiser celui ci.
Pour cela je m'inspire donc de Google.

Tout d'abord j'ai réussit sans problème a afficher dans la description des résultats du texte contenant le mot clé recherché.
La description est coupé a différent endroit et récupère des morceaux de phrases contenant le mot clé recherché.

Voici le problème qui s'oppose maintenant :
J'aimerai que la méthode de tri soit plus élaboré.
A savoir que j'aimerai trié mes résultats par nombre d'occurence trouvé.
Exemple :
Deux résultats : "papa a une voiture" / "maman a une voite rouge et une voiture verte"
On notera que le timestamp du premier enregistrement sera plus petit que le 2e.

Si je suis ma méthode de tri :
SELECT * FROM table WHERE motcle LIKE '%voiture%' ORDER BY datetime DESC LIMIT 0 , 20
"papa a une voiture" sera renvoyé en premier.

Hors j'aimerai que les résultats qui comporte le plus d'occurence du mot clé soit affiché en premier.
Est ce possible avec une requète Sql ?

Il ne suffirai pas de trié par ordre croissant.
D'autre part je ne peux pas me permettre non plus de parcourir tout les résultats, de compter le nombre d'occurence trouvé pour chacun d'eux et de re-parcourir un tableau pour enfin afficher le résultat final car le nombre de résultat peut facilement atteindre les 1 000 et ceci sera trié par tranche de 20.

En cherchant un peu partout sur le site et sur le net, j'ai découvert GROUP BY mais je n'ai pas vraiment bien compris ce a quoi il servait, est ce que cela pourai m'être utile ici ?

En vous remerciant d'avance, je me tiens a disposition de toute questions permetant de comprendre un peu mieux mon problème.

Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusive IE)
v.4 en cours : [ Lien ]
lundi 4 septembre 2006 à 21:57:26 | Re : Moteur de recherche avancé

nhervagault

Administrateur CodeS-SourceS
Salut Regarde du coté de la recherche fulltext http://omiossec.developpez.com/mysql/fulltext/etudes/ Bon courage
mardi 5 septembre 2006 à 18:01:46 | Re : Moteur de recherche avancé

Blacknight91titi

Membre Club
Bonjour,

Tout d'abord merci pour ta réponse.
J'ai été voir le lien que tu m'a fournit mais je ne vois pas en quoi cela poura m'aider.

Peut être ai-je mal expliqué mon problème.
Je vais essayer de résumé ce que j'aimerai faire :

J'aimerai trié les résultats que je cherche par nombre d'ocurence du mot clé trouvé.
Exemple : dans ma table voici ce qu'un champs comporte :
-Ce jeux est super !
-Les jeux de socièté sont très aprécié des enfants, ils jouent a ces jeux sans cesse.
-Le jeu de loie est un très vieu jeu mais toujours très connu. On peut y jouer a plusieur.

Imaginons que je recherche le mot "jeu".
J'aimerai que les résultats soit retourné comme ceci :
-Le jeu de loie est un très vieu jeu mais toujours très connu. On peut y jouer a plusieur.
-Les jeux de socièté sont très aprécié des enfants, ils jouent a ces jeux sans cesse.
-Ce jeux est super !

A savoir celon le nombre d'ocurence trouvé dans l'enregistrement. Et cela si possible directement via une requète sql.
En vous remerciant d'avance.

Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusive IE)
v.4 en approche : pour vous renseignez : [ Lien ]
mercredi 6 septembre 2006 à 09:46:49 | Re : Moteur de recherche avancé

BasicInstinct

Membre Club

/****************************************************************************/
-- Compte le nombre d'occurences d'une sous chaine dans une chaine /****************************************************************************/
CREATE FUNCTION dbo.FN_COUNTSTR (@STR VARCHAR(8000), @PATTERN VARCHAR(8000))
RETURNSINTEGER
AS
BEGIN

DECLARE @I INTEGER

-- cas trivial données en entrée NULL
IF @STR ISNULLOR @PATTERN ISNULL
BEGIN
   SET @I = NULL
   RETURN @I
END

-- cas trivial données en entrée vide
IF @STR ='' OR @PATTERN =''
BEGIN
   SET @I = 0
   RETURN @I
END

-- cas général

DECLARE @STR2 VARCHAR(8000)

SET @STR2 = @STR
SET @I = 0

WHILE PATINDEX('%'+@PATTERN+'%', @STR2) > 0
BEGIN
   SET @I = @I +1
   IF LEN(@STR2) > PATINDEX('%'+@PATTERN+'%', @STR2) + LEN(@PATTERN)
      SET @STR2 = SUBSTRING(@STR2, PATINDEX('%'+@PATTERN+'%', @STR2)
      + LEN(@PATTERN), LEN(@STR2) - PATINDEX('%'+@PATTERN+'%', @STR2)
      -  LEN(@PATTERN)+1)
   ELSE
      SET @STR2 = ''
END

RETURN @I

END
GO

BasicInstinct
mercredi 6 septembre 2006 à 19:04:54 | Re : Moteur de recherche avancé

Blacknight91titi

Membre Club
Bonjour,

N'ayant pas extrèmement de conaissance en sql je ne puis vraiment comprendre ce code.
J'ai toutefois trouver quelque chose d'intéréssant sur le lien que m'a fournit nhervagault :
SELECT titre, MATCH (texte, commentaire, titre) AGAINST ('mort') AS  cpt
FROM example_fulltext
WHEREMATCH (texte, commentaire, titre) AGAINST ('mort')
ORDER BY cpt DESC
Mais je n'ai pas résussit a faire de même pour mon cas. Après avoir créer la tableau comme indiqué au début de la page (voir le lien formuler deux messages plus haut) lorsque l'on éxécute cette requète un tri est effectué et semble être trié par nombre d'ocurence trouver.
J'ai donc fait de même pour moi, créer une clé (bien que je ne comprenne pas vraiment leur utilité) et appliquer cette requète en la modifiant celon mes besoins.
La requète ne retourne pas d'erreur mais aucun résultat n'est affiché alors que des enregistrements contiennent bien le mot clé que je recherche.
Je n'ai, je pense, commis aucune erreur de recherche, a savoir que je recherche dans les bon champs.

En vous remerciant encore pour votre réponse.

Ps : Cette requète sql sera traiter avec php par la suite.


Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusiv
vendredi 8 septembre 2006 à 09:03:53 | Re : Moteur de recherche avancé

Blacknight91titi

Membre Club
Bonjour

J'ai encore essayer de trouver d'ou pouvait venir c enouveua problème mais sans succès.
Tout d'abord voici la table sql que j'ai créer :
CREATE TABLE `test_m` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `txt` text character set latin1 collate latin1_general_ci,
  `autre` text character set latin1 collate latin1_general_ci,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `recherche` (`txt`,`autre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
 
--
-- Contenu de la table `test_m`
--
 
INSERT INTO `test_m` VALUES (1, 'jeu<br>jeu, blacknightfsijfshdufhusdhfusdhfuishfds, le jeu est pluto bien je trouve.\r\njeu m''entend tu ?', 'blaknight ame les jeux vidéo, particulièrement les jeux de stratégie.');
INSERT INTO `test_m` VALUES (2, 'jouons a un jeu qui permettra de jouer a qu veut jouer a un jeu !', 'je ne sais pas se qu''est un jeu, mais je jous souvent aux jeux vidéo.');


Ensuite voici la requète que j'éxécute :
SELECT txt, MATCH (txt, autre) AGAINST ('jeu') AS  cpt
FROM test_m
WHERE MATCH (txt, autre) AGAINST ('jeu')
ORDER BY cpt DESC


Mais là, aucun résultat n'est retouné, alors qu'avec la table créer grâce a cette url :
[ Lien ]
Cela marche très bien. J'ai peut être mal créer ma table mais j'en doute.

D'ou pourai donc venir le problème ?

En vous remerciant de votre aide par avance

Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusive IE)
v.4 en préparation : [ Lien ]
samedi 9 septembre 2006 à 08:47:17 | Re : Moteur de recherche avancé

Blacknight91titi

Membre Club
J'ai également essayer de modifier la requète sql pour retiré le tri :
SELECT txt, MATCH (txt, autre) AGAINST ('jeu') AS  cpt
FROM test_m
ORDER BY cpt DESC

Par contre la, cela me retourne bien un enregistrement et cela me permet donc de voir qu'il ne trouve jamais l'ocurence "jeu" dans mes enregistrements se qui est totalement faux puisqu'on peut voir a multiple reprise ce mot.

J'imagine que c'est un problème de structure.. mais je ne comprend pas lequel.

Merci pour votre aide futur.

Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusiv
samedi 9 septembre 2006 à 12:31:06 | Re : Moteur de recherche avancé

Blacknight91titi

Membre Club
Réponse acceptée !
Je pense avoir enfin trouver solution a mon problème.
Merci pour votre aide.

A titre informationel pour ceux qui passeront ici :
[ Lien ]
[ Lien ]
Ces deux liens devraient vous servir.

Merci encore.

Blacknight
http://flash-nouvelle.no-ip.org/ v.3 disponible (Exclusiv


Cette discussion est classée dans : résultats, problème, recherche, moteur, voiture


Répondre à ce message

Sujets en rapport avec ce message

au secours- besoin d'aide pour moteur de recherche bilingue [ par webfattah ] bonjour à tous, je suis en train de développer un site dans deux langue arabe et français. le site comprend un moteur de recherche. pour la version f moteur de recherche sql [ par RomainMaMarine ] Bonjour, Voici mon problème du jour... j'aimerai créer un moteur de recherche sur mon site internet. Le but est de rechercher dans ma base de donn Moteur de recherche SQL 2000 [ par vindavid38 ] ZanTarBonjour je souhaiterais savoir  si sql 2000 a un moteur spécial pour le fonctionnement du partitionnement horizontal?? Est ce que ce partionneme problème de recherche dans une base de donnée mysql [ par Xini28 ] Lorsque je fais une recherche dans une base de données mysql, il s'affiche "Resource id #3" au lieu de ce que je recherche. Quelqu'un sait de quoi ça moteur de recherche [ par astuces_jeux ] bonjour,jai mi mon propre moteur de recherche web et je dois mettre page par page dans la abse ou y a moyenn plus rapidement ??? Problème de choix des champs pour requête avec critère "WHERE" [ par drakkard ] Bonjour,j'ai un petit soucis de choix de champs pour ma base SQL EXPRESS,je souhaite mettre en place une gestion de login/pwd, j'ai choisi des champs Recherche Texte intégrale / Vue [ par cbu ] Bonjour,je suis en train de mettre en place un fonctionnement de recherche texte intégrale.J'ai besoin d'effectuer ma recherche sur des champs de type Probleme, Recherche sur plusieurs tables, plusieurs mots clefs [ par juki_webmaster ] Bonjour, J'ai une table sur laquel je souhaite faire des recherches, tout en OR. Le but étant de recherche sur chacun des trois champs, les valeurs Probleme de DISTINCT [ par schumileboss ] Bonjour,J'ai  un problème que je rencontre souvent, et j'aimerais savoir qu'elle serait la solution.Déf. du DISTINCT :La clause DISTINCT sélectionne c problème de bouton [ par womar2006 ] bonjour, Je trouve une problème dans mon projet de basse de donnée travailler sur le Access au niveaux de boutons de liens voir limage,<p align="cente


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,518 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales