Es ist sehr praktisch, ASP zum Implementieren von Suchmaschinenfunktionen zu verwenden, aber wie implementiert man eine intelligente Suche ähnlich wie 3721? Wenn Sie beispielsweise „Chinesen“ in das Suchkriterienfeld eingeben, werden Schlüsselwörter wie „China“ und „Menschen“ automatisch extrahiert und in der Datenbank durchsucht. Nachdem Sie diesen Artikel gelesen haben, werden Sie feststellen, dass diese Funktion so einfach zu implementieren ist.
Der erste Schritt besteht darin, eine Datenbank mit dem Namen db_sample.mdb zu erstellen (in diesem Artikel wird die Access2000-Datenbank als Beispiel verwendet) und darin die Tabelle T_Sample zu erstellen. Die Tabelle T_Sample enthält die folgenden Felder:
ID Automatische Nummer U_Name Text U_Info Bemerkungen
Im zweiten Schritt beginnen wir mit dem Entwurf der Suchseite Search.asp. Diese Seite enthält ein Formular (Frm_Search), das ein Textfeld und eine Schaltfläche zum Senden enthält. Und setzen Sie das Methodenattribut des Formulars auf „get“ und das Aktionsattribut auf „Search.asp“, dh senden Sie es an die Webseite selbst. Der Code lautet wie folgt:
Hier ist der Codeausschnitt:
<!-- Search.asp -->
<form name="frm_Search" method="get" action="Search.asp">
Bitte geben Sie Schlüsselwörter ein:
<Eingabetyp="text" name="key" size="10">
<Eingabetyp="submit" value="search">
</form>
Als nächstes betreten wir den Schlüsselteil der Realisierung einer intelligenten Suche.
Stellen Sie zunächst eine Datenbankverbindung her. Fügen Sie den folgenden Code am Anfang von Search.asp hinzu:
Hier ist der Codeausschnitt:
<%
Dim strProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" Gehen Sie davon aus, dass die Datenbank im Datenverzeichnis unter dem Stammverzeichnis der Homepage gespeichert ist
Setze CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider öffnet die Datenbankverbindung
%>
Ermitteln Sie als Nächstes die von der ASP-Seite empfangenen Daten und durchsuchen Sie diese in der Datenbank.
Hier ist der Codeausschnitt:
<font color="#FF0000">Keine Ergebnisse gefunden! ! ! </font>
<%
Anders
%>
Suchen Sie nach Elementen mit dem Namen „<font color="#FF0000"><%= S_Key %></font>“ und insgesamt <font color="#FF0000"><%= RST.RecordCount %></font > ist gefundenes Element: <p>
<%
Während Not RST.EOF den gesamten Datensatz durchläuft, zeigt die gesuchten Informationen an und legt den Link fest
%>
<!-- Dies kann als das von Ihnen benötigte Linkziel festgelegt werden-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % ></a></font>
<!--Einige Details anzeigen-->
<font style="font: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
<%
RST.MoveNext
Wend
RST.Schließen
Setze RST=Nichts
Ende wenn
Ende wenn
%>
Im obigen Code gibt es eine benutzerdefinierte Funktion AutoKey, die den Kern der Realisierung einer intelligenten Suche darstellt. Der Code lautet wie folgt:
Hier ist der Codeausschnitt:
<%
Funktion AutoKey(strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'Überprüfen Sie die Rechtmäßigkeit der Zeichenfolge. Wenn nicht, gehen Sie zur Fehlerseite. Sie können die Fehlerseite entsprechend Ihren Anforderungen einstellen.
if InStr(strKey,"=")<<0 oder InStr(strKey,"`")<0 oder InStr(strKey,"")<0 oder InStr(strKey," ")<<0 oder InStr(strKey ," ")<<0 oder InStr(strKey,"")<0 oder InStr(strKey,chr(34))<<0 oder InStr(strKey,"")<0 oder InStr(strKey,", ")<>0 oder InStr(strKey,"<")<>0 oder InStr(strKey,">")<>0 dann
Response.Redirect „error.htm“
Ende wenn
lngLenKey=Len(strKey)
Wählen Sie Case lngLenKey aus
Fall 0 Wenn es sich um eine leere Zeichenfolge handelt, gehen Sie zur Fehlerseite
Response.Redirect „error.htm“
Fall 1 Wenn die Länge 1 ist, wird kein Wert gesetzt
strNew1=""
strNew2=""
'Fall Sonst: Wenn die Länge größer als 1 ist, beginnen Sie mit dem ersten Zeichen der Zeichenfolge und durchlaufen Sie die Teilzeichenfolge mit der Länge 2 als Abfragebedingung
Für i=1 bis lngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1 & " oder U_Name wie %" & strSubKey & "%"
strNew2=strNew2 & " oder U_Info wie %" & strSubKey & "%"
Nächste
Endauswahl
'Holen Sie sich die vollständige SQL-Anweisung
AutoKey="Select * from T_Sample where U_Name like %" & strKey & "% or U_Info like %" & strKey & "%" & strNew1 & strNew2
Funktion beenden
%>
Um eine intelligente Suche zu realisieren, besteht der Kern darin, Suchschlüsselwörter automatisch zu gruppieren. Hier verwenden wir die Methode des Durchlaufens einer Teilzeichenfolge der Länge 2. Warum nicht die Teilstringlänge auf 1, 3, 4 oder was auch immer setzen? Dies liegt daran, dass die Funktion zum Gruppieren von Schlüsselwörtern verloren geht, wenn die Länge der Teilzeichenfolge weniger als 2 (also 1) beträgt. Wenn die Länge der Teilzeichenfolge größer als 2 ist, gehen einige Phrasen verloren. Sie können versuchen, CONST lngSubKey=2 in andere Zahlen zu ändern, und Sie werden selbst sehen, welche besser ist.
Vergessen Sie abschließend nicht, die Datenverbindung zu schließen, um Ressourcen freizugeben.
Hier ist der Codeausschnitt:
<%
CNN.Schließen
Setzen Sie CNN=Nichts
%>
Zu diesem Zeitpunkt ist diese intelligente Suchmaschine fertiggestellt. Sie können es auch weiter verbessern, z. B. durch Hinzufügen von Paginierung, Hervorhebung und anderen Funktionen. Okay, ich werde nicht die Zeit aller verschwenden, lasst es uns versuchen.