Vous n'êtes pas identifié(e).
Pages : 1
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
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
Ç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
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
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
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
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
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
Pages : 1