Par ailleurs, sur l’instance de démo renault dev j’essaie de produire le fonctionnement sur le module demo sur l’objet Order mais rien ne se passe (pas de filtre dynamique qui me permet de selectionner les client à partir des caractères saisis). Du coup, je ne sais pas si c’est un bug ou un manque de paramétrage de mon côté.
La seule différence que je vois comme ça en 1ère analyse par rapport à d’autres instances sur lesquelles ça marche c’est qu’on est sur MariaDB (MySQL) sur cette instance vs HSQLDB sur une instance où ça marche:
Or la completion de sélection tape dans la table d’index qui ne se comporte pas de la même manière d’une base de données à l’autre… @Francois tu pourrais jeter un coup d’oeil (instance https://renault.dev.simplicite.io) ? Merci
EDIT: j’ai reconstruit l’index sur l’instance renault et ça ne change rien
Il suffit d’ouvrir les log et voir qu’il y a un pb avec la base MySQL 5.5
Error SQL query: SELECT idx_key, idx_object, idx_row_id, idx_ukey, idx_all, MATCH (idx_ukey, idx_all) AGAINST (‘bi’ IN BOOLEAN MODE) AS score FROM m_index WHERE MATCH (idx_ukey, idx_all) AGAINST (‘bi’ IN BOOLEAN MODE) AND idx_object in (‘DemoSupplier’) ORDER BY score desc LIMIT 0,50
Error: The used table type doesn’t support FULLTEXT indexes
L’index fulltext n’a pas été créé ou n’est pas supporté par votre environnement.
J’ai converti la table d’index en MyISAM et créé l’index fulltext (et reconstruit l’indexation niveau plateforme) mais pour le moment ça ne résout pas le pb: la requête de match ne renvoie plus d’erreur mais ne renvoie aucun record… on continue nos investigations…
NB: Sur le serveur de l’instance renault on est en MariaDB 5.5 (pas en MySQL 5.5).
Bon après investigation il y a une subtilité qui nous échappe sur les recherches fulltext sur MariaDB 5.5…
En attendant d’élucider le mystère, on a rendu le mode de recherche fulltext inhibable via le paramètre système USE_FULLTEXT_INDEXES (valeur par défaut yes) , en le forçant à no ça marche:
A mon sens c’est un contournement non pérenne qui signifie que la recherche sera un like "%...%" et non une recherche indexée (on revient comme sur hsqldb = base de dev sans trop de données).
=> En production si vous avez une table de plusieurs millions de lignes, avec ce paramètre ça fera désormais un gentil full-scan de la table donc des perf execrables…
bref je déconseille vivement d’indexer de tels champs et préférer un lookup classique paginés dans le cas de grosses tables.