Ricerca parola in campo text

giovedì 29 giugno 2006 - 13.28

clark Profilo | Newbie

ciao,

come posso fare per effettuare una ricerca nel testo tramite query?

cerco di spiegarmi: devo scrivere una query che mi restituiscai il titolo dell'articolo memorizzato nel database che contiene, nel suo testo(tipo ntext), una certa parola chiave richiesta dall'esterno.

come posso fare?


Dampyr Profilo | Junior Member

>ciao,
>
>come posso fare per effettuare una ricerca nel testo tramite
>query?
>
>cerco di spiegarmi: devo scrivere una query che mi restituiscai
>il titolo dell'articolo memorizzato nel database che contiene,
>nel suo testo(tipo ntext), una certa parola chiave richiesta
>dall'esterno.
>
>come posso fare?

select con una where del tipo nome_campo LIKE '%quello che inserisci%'
... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...

shark986 Profilo | Junior Member

>cerco di spiegarmi: devo scrivere una query che mi restituiscai
>il titolo dell'articolo memorizzato nel database che contiene,
>nel suo testo(tipo ntext), una certa parola chiave richiesta
>dall'esterno.

"SELECT titolo_articolo FROM articoli WHERE titolo_articolo LIKE '%parola_chiave%';"


clark Profilo | Newbie


grazie!!
confesso che non avevo pensato alla condizione LIKE!!

ma posso usare LIKE anche dovendo cercare una parola o una stringa in un testo di , non sò, 1000 parole?

ad esempio, immettendo come parola chiave "sql server+c#" la query sarebbe:


SELECT titolo_articolo FROM Articoli WHERE testo_articolo LIKE '%sql server%' AND testo_articolo LIKE '%c#%'

non ne sono tanto sicuro!!

lbenaglia Profilo | Guru

>ma posso usare LIKE anche dovendo cercare una parola o una stringa
>in un testo di , non sò, 1000 parole?

Certo, anche se le prestazioni saranno inversamente proporzionali alla lunghezza del testo, al carico di lavoro del server ed al numero di righe della tabella.
Inoltre teini presente che la condizione di ricerca colonna LIKE '%valore%' è molto inefficiente perché non permette l'utilizzo di eventuali indici definiti sulla colonna.
Quindi occhio, fai alcune prove con una mole di dati paragonabile a quella che avrai in produzione e vedi se le prestazioni che ottieni sono adeguate.
Nel caso non lo siano puoi ricorrere alle ricerche Full Text:
http://msdn2.microsoft.com/en-us/library/ms142571.aspx

>ad esempio, immettendo come parola chiave "sql server+c#" la
>query sarebbe:
>
>
>
>SELECT titolo_articolo FROM Articoli
>WHERE testo_articolo LIKE '%sql server%' AND testo_articolo LIKE
>'%c#%'
Esatto.

>non ne sono tanto sicuro!!
Fai una prova e vedi tu stesso

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Dampyr Profilo | Junior Member

>Nel caso non lo siano puoi ricorrere alle ricerche Full Text:
>http://msdn2.microsoft.com/en-us/library/ms142571.aspx

Funzionano però solo in SQL Server, nella versione 2005 mi sembra di aver capito.

... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...

lbenaglia Profilo | Guru

>>Nel caso non lo siano puoi ricorrere alle ricerche Full Text:
>>http://msdn2.microsoft.com/en-us/library/ms142571.aspx
>
>Funzionano però solo in SQL Server, nella versione 2005 mi sembra
>di aver capito.

La ricerca Full Text fu introdotta con SQL Server 7.0.
SQL Server 2005 l'ha ulteriormente potenziata ma per le esigenze di clark va più che bene l'implementazione disponibile nelle versioni precedenti.

>... cerca di essere il giocatore di scacchi, non il pezzo sulla
>scacchiera...
Ci provo

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

shark986 Profilo | Junior Member

sembra che la mia presenza qui non sia più necessaria!

chiudi il topic se hai risolto.....

clark Profilo | Newbie

>Nel caso non lo siano puoi ricorrere alle ricerche Full Text:
>http://msdn2.microsoft.com/en-us/library/ms142571.aspx
>

mooolto interessante!!

devo un pò capire che cosa sono gli indici e come funzionano.

per ora ho installato il Microsoft search ma non funziona, non so perché ma non ho il "Full-Text Indexing" abilitato
eppure avete detto che funziona anche nel 2000!!
comunque ci lavorerò sopra....

intanto ho provato la query come avevo proposto e funziona. e le prestazioni non sembrano negative, per ora.

solo devo riuscire ad utilizzare il full-text search; altrimenti, volendo effettuare la ricerca di più di una parola in più campi ( ad es. nel titolo, nell'abstract e nella notizia) impazzirei con gli if e lo StringBuilder!!

per ora grazie

ciao


Whatever people say I am... that's what I'm not

lbenaglia Profilo | Guru

>per ora ho installato il Microsoft search ma non funziona, non
>so perché ma non ho il "Full-Text Indexing" abilitato
>eppure avete detto che funziona anche nel 2000!!
>comunque ci lavorerò sopra....
Leggi la documentazione di SQL Server 2000 partendo da questo paragrafo:

"Full-Text Indexes"
http://msdn.microsoft.com/library/en-us/createdb/cm_fullad_3bs2.asp

>intanto ho provato la query come avevo proposto e funziona. e
>le prestazioni non sembrano negative, per ora.
>
>solo devo riuscire ad utilizzare il full-text search; altrimenti,
>volendo effettuare la ricerca di più di una parola in più campi
>( ad es. nel titolo, nell'abstract e nella notizia) impazzirei
>con gli if e lo StringBuilder!!
Attenzione: in SQL Server 2000 puoi definire un indice Full-Text su una colonna oppure su tutta la tabella.
Fai alcune prove e vedi se il gioco vale la candela...

>per ora grazie
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5