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 Re : Général » requetes » 16/02/2010 13:25:48

oui
mais j'ai modifié ma requetes
là il m'affiche tous les textes qui commence par un mot
select tb.translation,tb source from translation_blocks
WHERE  tb.translation like '%avertiss%' or to_tsvector(translation)@@q  AND translation IS NOT NULL AND translation <>'';
je me demande est ce qu'il n'ya pas moyen d'ameloire cette requetes au lieu de mettre %avertiss%
aide moi

#2 Général » requetes » 14/02/2010 23:20:37

sweet-r
Réponses : 3

je veux afficher tous les mots commencant par la lettre av par exemple je veux voire tous les mots qui sont similaire à ses mots mange, mangeur,mangement, etc... dans mes textes.
dans ma table texts j'ai l'attribut source qui contient tous mes textes.
voici ma requetes:
select  source,ts_headline(tb.source,'StartSel={**}, StopSel={**}, HighlightAll=TRUE'),    ts_rank_cd(to_tsvector(source))
from texts
where to_tsvector(source)@@'^\source';
mais il m'affiche null
sil ya quelqu'un qui pourrai m'aidez

#3 Re : Général » Base de données postgresql(requetes) » 08/02/2010 01:38:24

ok  merci bcp pour l'idée.
mais je me pose la question comment ce sous ensemble des lignes récupéré par par la recheche plein texte avec like.
par contre , je me dis peut être ce moi qui utilise mal la fonction LIKE.
selon ma requetes ou peut on placer cette fonction?
j'avais travaille avec LIKE il m'affiche tous les documments sans selectionne la racine.
ma requetes:

SELECT 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
            FROM texts AS src_text
            plainto_tsquery(?) q
            WHERE  tb.translation LIKE '%q%';
si je met un selon pourcentage il m'affiche Null coe resultat. avec les deux % j'ai le resultat de tous les documents mais il n'arrive pas à selectionner la racine du mot demande.
Vraiment aidez moi

#4 Re : Général » Base de données postgresql(requetes) » 07/02/2010 12:33:16

ok
je voix donc là je dois cherche les similaires les mots par exemple  similaires à « excllente » on aura excllent, excllente, excllentement, par exemple.
si ce le cas donc je le remplace avec ts_rank_cd. parceque je travaille avec ts_rank_cd pour le score et le decoupage des mots .

#5 Re : Général » recherche text plien dans postgresql » 07/02/2010 12:12:26

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

#6 Re : Général » Base de données postgresql(requetes) » 07/02/2010 11:34:05

le dictionnaire que j'utilise est stemmer.
merci bcp mais je veux savoir comme faire pour afficher tous les documents par exemple afficher tous les documents dans le mot commencant par T dans postgresql.
j'ai sais que ce Like 'T%' mais il n'ya pas plus que ça .

#7 Re : Général » recherche text plien dans postgresql » 07/02/2010 11:23:38

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

#8 Re : Général » Base de données postgresql(requetes) » 07/02/2010 03:05:15

j'utilise ce dictionnaire ou bien dite moi comme puise je faire pour trouver  la racine du mot saisie dansles requetes protgresql et utilisatio de like avec to_tscector et to_tsquery,
par contre je n'arrive  pas à bien gere ces fonctions  c a d


select nom, prenom ts_headline(nom, T, sartsel={<b>},stopsel={<b>}, highlighAll=true),
from table
join tar as a on table.id=a.id
where to_tsvector(nom)@@ to_tsquery(T) in select nom from tar where nom like'R%')

#9 Re : Général » recherche text plien dans postgresql » 07/02/2010 02:52:29

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.

#10 Général » Base de données postgresql(requetes) » 06/02/2010 21:41:26

sweet-r
Réponses : 8

Bonjour,

J'aimerai avoir des informations au sujet de la recherche FULL TEXT dans Postgresql.

Par exemple, lorsque je fait une recherche dans une table pour retrouver un texte qui contient les mots averti, avertis, avertissement, avertissant, si je fait une recherche avec 'averti' ou 'avertis' cela fonctionne, par contre uniquement pour ce deux mots par contre  si je fait une recherche avec 'averti' pour qu'il m'affiche tous les mots correspond par exemple avertis, avertissant, averti, avertissement  cela ne fonctionne pas !
A priori le lexeme d'averti s serait 'avert' et pour 'avertissement est 'avertiss'  (voir la commande SELECT * FROM ts_debug('french', 'averti')

Je ne sait pas si ce fonctionnement est normal, et si il existe un moyen pour contourner ce problème ?

Merci pour votre aide .

voici ma requete:

SELECT 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
            FROM texts AS src_text
            plainto_tsquery(?) q
            WHERE  to_tsvector(translation)@@ q

#11 Re : Général » recherche text plien dans postgresql » 06/02/2010 18:07:52

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

#12 Général » recherche text plien dans postgresql » 06/02/2010 17:56:16

sweet-r
Réponses : 7

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

#13 Optimisation » recherche text plein » 06/02/2010 17:53:46

sweet-r
Réponses : 0

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

#14 Re : Site PostgreSQL.fr » que sont devenus les tutos de la rubrique technique? » 30/01/2010 15:14:55

bonjour a tous,
j'ai un petit souci sur quelques requetes de postgre.
ma requetes fonctione. elle permet de faire une recherche de mot dans mon fichier index du document.
je veux qu'il m'affiche tous les mots comment par la 1, 2 ou 3 lettre de mon mot.
parcontre il m'affiche les derniers mot.
peux etre s'il ya quelque qui pourra m'aide:
        $sql="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.source,q,'StartSel={**},StopSel={**},HighlightAll=TRUE') as src_block,
                tb.translation as dest_block, orig_text.id as orig_id,
                ts_rank(to_tsvector(source),q) AS rank, false as reverse,".$this->select_for_search()."
            FROM texts AS dest_text
            JOIN texts AS src_text ON dest_text.translation_of=src_text.id
            JOIN texts AS orig_text ON dest_text.original_text=orig_text.id
            JOIN translation_blocks AS tb ON tb.translation_id=dest_text.id
                ".$this->join_for_search().",
                plainto_tsquery(?) q
            WHERE to_tsvector(source) @@ q AND translation IS NOT NULL AND translation <> ''";
        $reversesql="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(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 AND source IS NOT NULL AND source <> ''";
        $this->log($sql);
        $this->log($reversesql);

Pied de page des forums

Propulsé par FluxBB