Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Riepilogo

SQL Server 7,0 o versione successiva full text search (FTS) offre una vasta gamma di funzionalità di ricerca. È possibile usare una clausola CONTAINs per eseguire diverse ricerche, ad esempio:

  • Una parola o una frase.

  • Prefisso di una parola o di una frase.

  • Una parola che si trova accanto a un'altra parola.

  • Una parola che viene generata in maniera flesso da un altro. Ad esempio, la parola "unità" è il gambo flesso di: unità, guidate, guidato e guidato.

  • Una parola con una ponderazione designata superiore rispetto a un'altra parola.

La sintassi CONTAINs richiede le virgolette doppie per il prefisso ("choc *") e per più ricerche di parole o frasi ("Chocolate chip" o "farina d'avena"). Questo problema può essere problematico in termini di progettazione dell'interfaccia utente, perché gli utenti non sono abituati a dover citare correttamente le proprie ricerche e sono inclini a commettere errori quando lo fanno. È necessaria una funzione semplice che gli sviluppatori possono usare per citare correttamente una stringa di query prima di passarla a SQL Server.

Ulteriori informazioni

Di seguito è riportata una revisione delle nozioni di base sulla sintassi della query full-text con la parola chiave CONTAINs nella clausola WHERE (per una sintassi più completa, vedere la documentazione online di SQL Server 7,0):

  • Termine semplice:

    WHERE CONTAINS(QuantityPerUnit, 'bottles')
  • Frase in termini semplici:

    WHERE CONTAINS(ProductName, ' "Sasquatch ale" OR "steeleye stout" ')
  • Termine prefisso:

    WHERE CONTAINS(ProductName, ' "choc*" ')
  • O con il termine prefisso:

    WHERE CONTAINS(Description, '"sea*" OR "bread*"')
  • Termine di prossimità:

    WHERE CONTAINS(ProductName, 'spread NEAR Boysenberry')
  • Termine di generazione:

    WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')
  • Termine ponderato:

    WHERE CONTAINS(Description, 'ISABOUT (spread weight (.8), 1)

Nota che la vicinanza, la generazione e i termini ponderati non usano virgolette doppie. Si noti inoltre che:

  • Le singole parole e frasi possono essere racchiuse tra virgolette doppie (ad eccezione dei termini di prossimità, generazione e ponderazione).

  • Il termine prefisso Cerca deve essere racchiuso tra virgolette doppie.

  • Più ricerche di termini e frasi devono avere ogni parola e/o frase racchiusa tra virgolette doppie.

Con le precedenti regole semplificate, puoi creare un semplice parser usando le espressioni regolari per posizionare correttamente le virgolette attorno alle stringhe di ricerca. L'algoritmo da usare è:

Replace all double quotes (clears the text and any improper quotations)   If the text string contains one of the key words "NEAR", "FORMSOF", or    "ISABOUT", the parsing is complete   Else      Surround any instances of 'and' or 'and not' with quotes      Surround any instances of 'or' or 'or not' with quotes      Surround the entire string with quotes

Di seguito è riportata una versione JavaScript:

function fxnParseIt() {// Note: sInputString code for demo purposes only, and should be//   replaced with user's code for getting in string value.var sInputString = 'asp and database';sText = sInputString;sText = sText.replace(/"/g,"");if (sText.search(/(formsof|near|isabout)/i) == -1) {sText = sText.replace(/ (and not|and) /gi,'" $1 "');sText = sText.replace(/ (or not|or) /gi,'" $1 "');sText = '"' + sText + '"';}sInputString = sText;}

Di seguito è riportata una versione di VBScript:

Sub ParseIt()      '// Note: sInputString code for demo purposes only, and should be      '/replaced with user's code for getting in string value.      '// Note: this code could also be easily re-written as a function,      '/        and is written as a sub for demo purposes only.      Dim strIn, RegEx, sInput      sInputString = "asp and database"      strIn = sInput      Set RegEx = New RegExp      If Len(strIn) < 1 Then            MsgBox ("You must enter a search string")      Else            strIn = Replace(strIn, Chr(34), "")            If (InStr(strIn, "formsof") > 0) Or (InStr(strIn, "near") > 0) Or (InStr(strIn, "isabout") > 0) Then                  ParseMe.value = strIn            Else                  RegEx.IgnoreCase = True                  RegEx.Global = True                  RegEx.Pattern = "( and not | and )"                  strIn = RegEx.Replace(strIn, Chr(34) & "$1" & Chr(34))                  RegEx.Pattern = "( or not | or )"                  strIn = RegEx.Replace(strIn, Chr(34) & "$1" & Chr(34))                  strIn = Chr(34) & strIn & Chr(34)                  ParseMe.value = strIn            End If      End IfEnd Sub

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×