mise en place de fulltext

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mise en place de fulltext

par toony.m » 08 juil. 2008, 14:40

OK merci!

Je vais voir si ça passe ou pas.

Pour ce qui est de me 60 champs, j'ai pas trop le choix, ce sont autant de propriété liées à la table.
Et il reste 40 tables...

par Sékiltoyai » 08 juil. 2008, 13:02

En même temps, 60 champs dans une table, vérifie quand même que ta modélisation est correcte...

par caroube » 08 juil. 2008, 12:03

déjà, je ferais un OR et pas un AND ...

Ensuite, j'ai eu un problème un peu similaire qui consistait à vouloir indexer et retrouver en fulltext des objets textuels très divers : des fichiers textes, des champs de base de données, du HTML, ... La solution que j'ai employée consistait à créer une table avec un champ "spécial indexation" rempli avec tout ce que je voulais indexer (HTML nettoyé des tags, contenu des fichiers textes, ...) et un champ qui indiquait la localisation de l'objet.

Tu peux petu-être regarder de ce côté-là : créer un champ spécial indexation fulltext en plus de ta soixantaine de champs, ou carrément dans une table à part. Bien sûr, cela demande de dupliquer l'information et de maintenir la synchronisation.

Sinon, tu peux toujours assembler n requêtes

Code : Tout sélectionner

select * ... where match (champ1 ...) union select * ... where match (champ17 ...) union ...

mise en place de fulltext

par toony.m » 08 juil. 2008, 10:22

Bonjour,

J'ai besoin de faire une requete qui effectue une recherche sur un soixantaine de champs. J'avais commencé avec les opérateur LIKE, et je viens de découvrir l'existence de FULLTEXT. :?

J'ai 2 questions:
- Les champs seront-ils correctement indexés si je crée l'index FULLTEXT après avoir créé et rempli tous mes champs ?
- Lors de la création mysql m'a répondu :
#1070 - Too many key parts specified; max 16 parts allowed

Comment pallier à ce problème si j'ai plus de 16 champs a analyser ?

EDIT:
J'ai créer 4 index FULLTEXT. J'arrive a faire une recherche dans l'un des index mais comment faire pour rechercher dans les 4 ?

Ce code fonctionne :

Code : Tout sélectionner

SELECT * FRom matable WHERE MATCH (champs1,...,champs16) AGAINST ('eponge') ;
Mais pas celui là:

Code : Tout sélectionner

SELECT * FRom matable WHERE (MATCH (champs1,...,champs16) AND MATCH (champs17,...,champs32)) AGAINST ('eponge') ;
Est-ce la bonne méthode ?