Kopsavilkums
SQL Server 7,0 vai jaunākas versijas pilna teksta meklēšana (FTS) nodrošina bagātīgu meklēšanas funkcionalitātes kopu. Varat izmantot klauzulu satur, lai veiktu dažādus meklēšanas rezultātus, piemēram:
-
Vārds vai frāze.
-
Vārdu vai frāžu prefikss.
-
Vārds, kas atrodas tuvu citam vārdam.
-
Vārds, kas tiek ģenerēts no citas apzīmējami. Piemēram, vārds "disks" ir formveidošanasais kāts: diski, brauca, braukšana un piedziņa.
-
Vārds, kura lielums pārsniedz citus vārdus.
SATUR sintaksei ir nepieciešamas dubultas pēdiņas ("Choc *"), kā arī vairāku vārdu vai frāžu meklēšana ("šokolādes mikroshēma" vai "auzu"). Tas var būt problemātiski saistībā ar UI noformējumu, jo lietotāji nav pieraduši, ka viņiem ir pareizi jācitē viņu meklēšana un ir tieksme kļūdīties. Vienkārša funkcija ir nepieciešama, lai izstrādātāji var izmantot, lai pareizi citētu vaicājuma virkni, pirms tas tiek nodots SQL Server.
Papildinformācija
Tālāk sniegts pārskats par pilna teksta vaicājumu sintakses izmantošanu ar atslēgvārdu WHERE (pilnīgāku sintaksi skatiet SQL Server 7,0 grāmatās tiešsaistē):
-
Vienkārši termini:
WHERE CONTAINS(QuantityPerUnit, 'bottles')
-
Frāze vienkāršā termiņā:
WHERE CONTAINS(ProductName, ' "Sasquatch ale" OR "steeleye stout" ')
-
Prefiksa termiņš:
WHERE CONTAINS(ProductName, ' "choc*" ')
-
VAI ar prefiksa terminu:
WHERE CONTAINS(Description, '"sea*" OR "bread*"')
-
Tuvuma termiņš:
WHERE CONTAINS(ProductName, 'spread NEAR Boysenberry')
-
Ģenerēšanas termiņš:
WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')
-
Svērtais termiņš:
WHERE CONTAINS(Description, 'ISABOUT (spread weight (.8), 1)
Ievērojiet, ka tuvuma, paaudzes un svērtajiem terminiem neizmantojiet pēdiņas. Ņemiet arī vērā, ka:
-
Atsevišķus vārdus un frāzes var ietvert dubultpēdiņās (izņemot tās tuvumā, ģenerēšanā un svērtos terminus).
-
Prefiksa terminu meklēšanai jābūt ietvertai dubultpēdiņās.
-
Vairāku terminu un frāžu meklēšanai ir jābūt katram vārdam un/vai frāzei, kas ir jāietver pēdiņās.
Ņemot vērā iepriekš vienkāršotos noteikumus, varat izveidot vienkāršu parsētāju, izmantojot regulāras izteiksmes, lai pareizi ievietotu pēdiņas ap meklēšanas virknēm. Izmantojamais algoritms ir:
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
Šī ir JavaScript versija:
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;}
Šī ir VBScript versija:
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