[Linuxtrent] Re: Postgresql - ricerca full text

  • From: Guido Brugnara <gdo@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 03 Dec 2008 06:55:41 +0100

Se devi fare delle query semplici, Postgresql implementa l'operatore "~*" con il quale puoi fare confronti usando la sintassi delle espressioni regolari.


Nell'esempio che proponi puoi quindi ricercare "........ where campo ~* 'ope';"

ed estrarre tutti e tre i record dell'esempio.

Per saperne di più: http://www.regular-expressions.info/postgresql.html


Naturalmente il costo della query dipende dagli indici a disposizione. Se l'espressione regolare deve confrontare valori interni gioco forza che dovrà "spazzolare" l'intero archivio.

Se invece necessiti di efficenza allora:

Se usi un Postgresql di versione < di 8.3 devi installare una estensione per postgresql che gestisca Full Text Search, come ad esempio http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/

Se invece hai ha disposizione una versione 8.3+ allora FTS è nativo. Vedi: http://www.postgresql.org/docs/current/static/textsearch.html

Altre info in: http://www.scribd.com/doc/4846364/Fulltext-Search-in-PostgreSQL

bye
Gdo



Stefano Morandi ha scritto:
Di nuovo! :-P

Domanda: c'e' un modo furbo per effettuare la ricerca di una sottostringa all'interno di un campo tsvector?

L'idea è che in un ipotetico campo
 "Sistema Operativo"
 "Operazione di polizia"
 "Operandi"

sia possibile effettuare ricerche _tipo_ "campo like 'oper%'"

Qual'e' il modo più furbo? C'e' un modo furbo?

Ciao

--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: