Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Général » Recherche d'un interpréteur amélioré pour requête FULLTEXT » 10/09/2010 10:33:50
Ce qui a été fait pour docs.postgresql.fr est disponible sur http://github.com/gleu/pgdocs_fr/blob/m … h.php#L158 (ligne 158). On sépare la recherche mot par mot. Si on trouve un mot clé and, or ou not, on le remplace par son équivalent tsquery. Sans mot clé, on ajoute automatique le &. Etc. C'est certainement moyennement codé, pas très propre. Mais au moins, c'est fonctionnel.
Il va d'ailleurs falloir que je replonge dans ce code pour y ajouter les dernières nouveautés de la 9.0 (prefix matching, accents, etc.).
Merci, je vais regarder ça.
#2 Re : Général » Recherche d'un interpréteur amélioré pour requête FULLTEXT » 10/09/2010 09:49:28
Merci pour vos réponses.
ecocentric a écrit :Il est possible que je sois passé à côté de quelque-chose d'évident mais je n'ai à ce stade rien vu dans la documentation. En gros, je voudrais donc pouvoir attaquer PostgreSQL avec le même genre de syntaxe que celle que je peux utiliser sur un mode FULLTEXT de MySQL (qui supporte +, -, "", etc).
Vous ne pouvez pas. À moins évidemment de changer le code source de PostgreSQL... mais là, ça vous emmène bien loin.
En fait, je pensais plutôt à des fonctions en langage de programmation (PHP, Java,...) placées entre le champs de saisie et PostgreSQL, et qui seraient capables de générer la "bonne" requête SQL. Je me dis que, n'étant probablement pas le premier à avoir cette demande, ça pourrait exister.
#3 Re : Général » Recherche d'un interpréteur amélioré pour requête FULLTEXT » 10/09/2010 09:29:19
Votre demande manque de précision. Vous voulez exécuter ces recherches dans quoi ? parce qu'il est très simple de transformer ce que saisit l'utilisateur (AND/OR/NOT ou ET/OU/NON) en ce que peut comprendre PostgreSQL. C'est d'ailleurs ce que fait http://docs.postgresql.fr/ .
J' explique.
J'ai un premier problème. De mémoire, on ne peut pas faire de recherche par phrase ou par expression exacte (exemple: "nicolas sarkozy") en restant dans le mode fulltext de PostgreSQL. Il faut passer par un ILIKE. Compréhension erronée de ma part ou c'est bien comme ça? Donc, déjà, je recherche un système qui me permettrait de faire une requête incluant des OU, des ET, des NON et des recherches exactes sans devoir moi-même analyser la requête.
J'ai un second problème. Je viens d'aller revoir la documentation (par ailleurs très bien faite) et, si je comprends bien, il faut passer par les opérateurs &, | et !. Ce qui est moins confortable (les & et les | sont peu familiers pour la plupart des gens) pour un utilisateurs habitué à la syntaxe Google (OR, AND, -, +, etc).
D'où ma question, y a-t-il un moyen, dans PostgreSQL, de faire des recherche de type
("logiciel libre" OR "open source") AND NOT linux
sans devoir soi-même re-analyser la requête moi-même.
Il est possible que je sois passé à côté de quelque-chose d'évident mais je n'ai à ce stade rien vu dans la documentation. En gros, je voudrais donc pouvoir attaquer PostgreSQL avec le même genre de syntaxe que celle que je peux utiliser sur un mode FULLTEXT de MySQL (qui supporte +, -, "", etc).
#4 Général » Recherche d'un interpréteur amélioré pour requête FULLTEXT » 09/09/2010 15:22:34
- ecocentric
- Réponses : 6
Bonjour,
Je recherche un outil qui me permettrait de procéder à des requêtes FULLTEXT dans PotgreSQL de type:
("logiciel libre" OR "open source") AND NOT linux
Ce type de requête n'est pas compris directement par PostgreSQL (sauf erreur de ma part). Elle doit donc être traduite en syntaxe PostgreSQL (avec des &, des | ou des !).
Des pistes?
En vous remerciant,
Cordialement,
Robert Viseur.
#5 Re : Général » Boost de champs avec la fonction FULLTEXT » 19/02/2009 12:43:51
Merci! Je l'avais loupé dans la doc, par ailleurs fort bien faite :-).
http://docs.postgresql.fr/8.3/textsearch.html
#6 Général » Boost de champs avec la fonction FULLTEXT » 18/02/2009 23:50:57
- ecocentric
- Réponses : 2
Bonsoir,
Lors d'un exposé sur mode FULLTEXT PostgreSQL, j'avais noté que:
"A noter qu'il est possible, à la création du vecteur, de mettre quatre poids, allant de A à D, à un vecteur, de manière à le booster."
Je ne retrouve aucune trace de cela dans la documentation :-/.
Quelqu'un aurait-il de l'information là dessus ?
Cordialement,
Pages : 1