Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Moteur de recherche avancé [ MySQL / Requêtes ] (Blacknight91titi)

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é dans : résultats, problème, recherche, moteur, voiture


Répondre à ce message

Sujets en rapport avec ce message

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 recherche requete sql : export donnée de la veille [ par dams9578 ] Bonjour,Je voudrais effectuer une exportation DTS  (Data Transformation Service) automatique chaque jour, à travers l'application : "SQL Serveur Entre Problème bizarre avec SQL Srv 2005 [ par white_mage ] <span lang="FR-CH"


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.