Vous n'êtes pas identifié(e).
Pages : 1
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
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
Merci pour ta réponse. Je vais essayer d'utiliser cette extension.
Hors ligne
Pages : 1