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.htmlNaturalmente 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! :-PDomanda: 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