Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  MySql Full Text Search

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySql Full Text Search

n°1162832
gooopil
pfiew
Posté le 28-07-2005 à 11:39:48  profilanswer
 

Salut,  
 
J'un peu de mal avec les full text search...  
 
Voila ma requete :  
 
 
SELECT people_last, people_first, people_id FROM people WHERE MATCH (people_last, people_first, people_cat, people_mail) AGAINST ('maci*' IN BOOLEAN MODE)  
 
Et un extrait de ma table de test :  
 
people_last  
-----------  
macihn  
deeux mottts  
asd  
 
Si je cherche juste 'maci', il me retroune rien. Normal  Donc j'ai rajouté le * pour qu'il me retourne les mots incomplets.  
 
Maintenant les problèmes :  
1. Mais si je cherche 'deeu*' ou 'deeux' ou 'deeux*' il me retourne rien...Je  comprend pas    
 
2. Après j'aimerais aussi pouvoir avoir une query de trois caractères ce qui n'est pas possible avec le config par défaut de mysql. Hors ca m'étonnerais que je puisse changer ca sur mon serveur d'hébergement, jesuis donc à la recherche d'une solution pour ca  
 
Merci

mood
Publicité
Posté le 28-07-2005 à 11:39:48  profilanswer
 

n°1163215
sielfried
Posté le 28-07-2005 à 15:20:33  profilanswer
 

Balance le script de création de ta table stp, j'aimerais tester de mon côté, paskeu comme ça jvois pas trop pourquoi 'deeu*' matcherait rien.
 
Pour ce qui est de la deuxième question, normalement y'a pas de limite inférieure pour la longueur du masque, seulement pour celle des mots qu'il pourrait trouver (4 caractères minimum par défaut).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1163270
gooopil
pfiew
Posté le 28-07-2005 à 15:37:01  profilanswer
 

La tableu
 

Code :
  1. CREATE TABLE `people` (
  2.   `people_last` varchar(30) NOT NULL default '',
  3.   `people_first` varchar(50) NOT NULL default '',
  4.   `people_dob` date NOT NULL default '0000-00-00',
  5.   `people_ad1l1` varchar(50) NOT NULL default '',
  6.   `people_ad1l2` varchar(50) NOT NULL default '',
  7.   `people_country1` varchar(25) NOT NULL default '',
  8.   `people_phone1` varchar(20) NOT NULL default '0',
  9.   `people_ad2l1` varchar(50) NOT NULL default '',
  10.   `people_ad2l2` varchar(50) NOT NULL default '',
  11.   `people_country2` varchar(25) NOT NULL default '',
  12.   `people_phone2` varchar(20) NOT NULL default '0',
  13.   `people_cell` varchar(20) NOT NULL default '0',
  14.   `people_mail` varchar(60) NOT NULL default '',
  15.   `people_warn` tinyint(4) NOT NULL default '0',
  16.   `people_cat` varchar(20) NOT NULL default '',
  17.   `people_note` varchar(255) NOT NULL default '',
  18.   `people_id` int(11) NOT NULL auto_increment,
  19.   `people_user_id` tinyint(4) NOT NULL default '0',
  20.   PRIMARY KEY  (`people_id`),
  21.   FULLTEXT KEY `people_last` (`people_last`,`people_first`,`people_mail`,`people_cat`)
  22. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


 
Et deux trois valeurs de test
 

Code :
  1. INSERT INTO `people` VALUES ('last name', 'first nale', '0000-00-00', 'address11', 'address12', 'c1', 'p1', 'add21', 'add22', 'c2', 'p2', 'cell', 'asd@yahoo.con', 1, 'cat', 'note', 2, 1);
  2. INSERT INTO `people` VALUES ('Macih', 'Bidule', '1981-04-06', '', '', '', '', '', '', '', '', '', '', 0, '', '', 3, 1);
  3. INSERT INTO `people` VALUES ('asd', 'asd', '0000-00-00', '', '', '', '', '', '', '', '', '', '', 0, '', '', 4, 1);

 

n°1163313
sielfried
Posté le 28-07-2005 à 15:46:49  profilanswer
 

Ah ben voilà, si tu testes sur "last name" forcément, "last" est un mot courant qui ne sera donc pas matché (edit: "name" aussi d'ailleurs)
 
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Words in the stopword list are ignored. A stopword is a word such as ``the'' or ``some'' that is so common that it is considered to have zero semantic value. There is a built-in stopword list.


Message édité par sielfried le 28-07-2005 à 15:47:17

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1163334
gooopil
pfiew
Posté le 28-07-2005 à 15:51:23  profilanswer
 

sielfried a écrit :

Ah ben voilà, si tu testes sur "last name" forcément, "last" est un mot courant qui ne sera donc pas matché (edit: "name" aussi d'ailleurs)
 
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
Words in the stopword list are ignored. A stopword is a word such as ``the'' or ``some'' that is so common that it is considered to have zero semantic value. There is a built-in stopword list.


 
 
 :cry:  :heink:  :fou:  
 
Je l'ai vu pourtant cette %&$§"$%&*# de liste...Trop con dans l'histoire j'aurais bien perdu mon temps pour rien  :sarcastic:  
 
Bah merci bien hein :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  MySql Full Text Search

 

Sujets relatifs
Optimiser mon serveur MySQLTentative de mini-bench comparant MySQL et SQL Server
[MySQL] Update multitablesvba access mysql
[RESOLU] [MySQL API C] Problème avec mysql_query[PHP/mySQL] conseils d'optimisation
Verifier l'egalité de 2 champs "text"Structure base de données MySQL : correcte ou pas ?
php et mysql[MySQL] Moteur de recherche : Full-text search ou indexation normale
Plus de sujets relatifs à : MySql Full Text Search


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR