Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 29/03/2019 12:38:21
- rheman
- Membre
Postgresql prefix wildcard for full text search
Bonjour, J'aimerais savoir comment faire une prefix wildcard sur une full text search.
- Par exemple je peux faire un postfix search.
SELECT "t1".*
FROM "t1"
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', 'don:*') )
Cette requete devrait renvoyer des résultats correspondant à "London".
Cependant, je ne peux faire une recherche avec préfixe comme par exemple:
SELECT "t1".*
FROM "t1"
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', ':*don') )
En fait, j'aimerais avoir un caractère générique préfixé au début et à la fin du terme de recherche, quelque chose comme suit:
SELECT "t1".*
FROM "t1"
WHERE (to_tsvector('simple', "t1"."city") @@ to_tsquery('simple', ':*don:*') )
Je peux utiliser une clause LIKE, mais j'espérais bénéficier des performances des fonctionnalités du full text search de postgresql
Cordialement,
Hors ligne
#2 29/03/2019 15:54:23
- dverite
- Membre
Re : Postgresql prefix wildcard for full text search
to_tsquery ne permet pas de faire ça, mais l'extension pg_trgm le permet.
On fait un index GIN ou GIST sur la colonne et il est utilisé automatiquement par une clause LIKE colonne '%foo%' ou ILIKE colonne '%foo%'. Accessoirement pg_trgm permet aussi de reconnaître des termes saisis de manière approximative.
https://www.postgresql.org/docs/current/pgtrgm.html
Dernière modification par dverite (29/03/2019 15:54:41)
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
#3 30/03/2019 10:03:56
- rheman
- Membre
Re : Postgresql prefix wildcard for full text search
Merci pour ta réponse. Je vais essayer d'utiliser cette extension.
Hors ligne
Pages : 1