8721 sujets

Développement web côté serveur, CMS

Bonsoir,

Je souhaiterai effectuer des recherches du genre "flo", qui accepte de me donner comme résultat "florian", mais également des recherches où "nom prénom" accepte de me rechercher sur la colonne nom le nom et prenom et sur la colonne prenom, la meme chose, mais qui ne se préoccupe pas des accents également.

Les LIKE n'étant pas performant, j'ai pas mal de réticences à les utiliser. Je me suis donc tourné vers match/against... très bien, mais pas pour les recherches partielles de mot ! Je ne vois donc plus que les regex ou utiliser Xapian ou autre (dont je ne connais pour l'instant absolument rien)...

Que me conseillerez vous ?

En espérant que vous saurez m'aiguillez correctement Smiley smile

Merci par avance!

PS : Le but est d'avoir quelque chose de performant et peu couteux en ressource (un rapport hein ^^)
Modérateur
Salut,
Tu ne peux pas échapper au LIKE. La RegEx est plus coûteuse. Là où tu vas optimser, c'est en faisant une requête SQL dynamique. Aussi, regarde le moteur de ta table. Pour MySql Isam permet d'améliorer ce genre de chose. En contre parti, il faut oublier les transactions.

Dans un gros formulaire de recherche :
- si post[ champ ]
- si post[ unautrechamp ]

en sql abrégé :
SELECT .... WHERE champ LIKE %post[ champ ]% OR unautrechamp LIKE %post[ unautrechamp ]%
Modifié par niuxe (17 Sep 2014 - 23:08)
Salut,

Oui, pour les transactions toute façon si la requête est dynamique avec php, elles ne servent plus vraiment. Et je suis bien sur Isam.

J'avais vu les logiciels tels que Xapian (j'ai un dédié), ce ne serait pas mieux? Je ne trouve pas grand chose là dessus, hormis le "c'est le plus performant" ... Smiley ohwell