MySql Full Text Search

MySql Full Text Search - PHP - Programmation

Marsh Posté le 28-07-2005 à 11:39:48    

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

Reply

Marsh Posté le 28-07-2005 à 11:39:48   

Reply

Marsh Posté le 28-07-2005 à 15:20:33    

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
Reply

Marsh Posté le 28-07-2005 à 15:37:01    

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);

 

Reply

Marsh Posté le 28-07-2005 à 15:46:49    

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
Reply

Marsh Posté le 28-07-2005 à 15:51:23    

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 :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed