PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/02/2010 17:56:16

sweet-r
Membre

recherche text plien dans postgresql

Bonjour A tous,
Excuse moi , je me suis planté sur une requête de recherche de text plein dans postgresql.
mon souci est je souhaiterais afficher tous les documents qui comment par la permière lettre de mon caractère saisi.
dans ma requete il m'affiche uniquement quelques documents par exemple averti il m'affiche averti, avertis mais il m'affiche pas avertissant , avertissement. donc je veux qu'il m'affiche tout ces mots.
Voici ma requete:

SELECT src_text.id as src_id, src_text.title as src_title,
                dest_text.id as dest_id, dest_text.title AS dest_title,
                ts_headline(tb.translation,q,'StartSel={**}, StopSel={**}, HighlightAll=TRUE') as src_block,
                tb.source as dest_block, orig_text.id as orig_id,
                ts_rank_cd(to_tsvector(translation),q) AS rank, TRUE as reverse,".$this->select_for_search()."
            FROM texts AS src_text
            JOIN texts AS dest_text ON src_text.translation_of=dest_text.id
            JOIN texts AS orig_text ON src_text.original_text=orig_text.id
            JOIN translation_blocks AS tb ON tb.translation_id=src_text.id
                ".$this->join_for_search().",
                plainto_tsquery(?) q
            WHERE  to_tsvector(translation)@@ q "

quelque pourrai m'aide .
aidez moi SVP

Hors ligne

#2 06/02/2010 18:07:52

sweet-r
Membre

Re : recherche text plien dans postgresql

jai aussi ajouter LIKE mais il m'affiche une erreur :
where to_tsvector(translation)@@q and select translation from translation_blocks where translation LIKE 'q%'.
ceci me génere une erreur
vraiment aidez moi

Hors ligne

#3 07/02/2010 01:21:59

gleu
Administrateur

Re : recherche text plien dans postgresql

Ça vous affiche une erreur parce que le filtre que vous indiquez ne veut rien dire. J'avoue que je ne comprends pas ce que vous voulez obtenir. La clause EXISTS me semble être la solution, mais sans aucune certitude.


Guillaume.

Hors ligne

#4 07/02/2010 02:52:29

sweet-r
Membre

Re : recherche text plien dans postgresql

par exemple quand je saisie le mot 'averti' avec lexeme 'avert' il m'affiche 'averti' et 'avertis' pour trouver le mot 'avertissement' dans le texte il me faut saisir 'avertiss'  son lexeme 'avertiss'. mon souci  je veux quand je tape le mot 'averti' il m'affiche tous les mots par exemple averti, avertis, avertissement.
s'il ya quelqu'un qui à une solution à me proposé je suis à votre écoute.

j'ai essai avec exists il m'affiche rien comme resultat.

Hors ligne

#5 07/02/2010 08:39:49

gleu
Administrateur

Re : recherche text plien dans postgresql

je veux quand je tape le mot 'averti' il m'affiche tous les mots par exemple averti, avertis, avertissement.

Je ne pense pas que Text Search permette de faire ça. Il permet de donner la racine, pas de proposer les mots qui ont cette racine.


Guillaume.

Hors ligne

#6 07/02/2010 11:23:38

sweet-r
Membre

Re : recherche text plien dans postgresql

merci

est il possible d'inserer like dans tsvectort ou tsquery?
dans mon where quand j'enleve tsvector@@tsquery par exemple et je mets like  avec '%%' il m'affiche tous les documents mais il ne selectionne pas les mots rechercher dans le documents.
je souhaiterais que vous m'explique comment dois je faire pour travailler avec tsvector et tsquery et like

Hors ligne

#7 07/02/2010 11:48:44

Marc Cousin
Membre

Re : recherche text plien dans postgresql

Non, les requêtes full text travaillent sur des mots. Enfin sur des lexemes.

Lisez la doc :
http://docs.postgresql.fr/8.4/textsearch.html

La seule solution en utilisant ce mode serait de configurer votre propre lexer si celui qui est en place ne correspond pas. Mais ça risque de devenir lourd.

Dernière modification par Marc Cousin (07/02/2010 11:57:36)


Marc.

Hors ligne

#8 07/02/2010 12:12:26

sweet-r
Membre

Re : recherche text plien dans postgresql

je vois ,j'ai voulu creer un dictionnaire de synonym pour gerer les lexemes de la racine. cela ne marche pas il m'affiche une erreur :
par contre , je  ne peux  pas utiliser le dictionnaires puisqu'ils ne sont disponibles que pour quelques langues.
donc je veux savoir le fonctionnement d'une simple recherche de sous chaine ou d'expressions régulières.
je croix mon problème sera résolu sur l'une de ce deux recherche.
je n'arrive pas à comprendre et manipuler  ces fonctions dans ma requetes
http://www.postgresql.org/docs/current/ … tring.html
quelqu'un pourrait -il  bien expliquer ces fonctions.
soite par d'exemple SVP

Dernière modification par sweet-r (07/02/2010 12:15:26)

Hors ligne

Pied de page des forums