Il est très pratique d'utiliser ASP pour implémenter les fonctions des moteurs de recherche, mais comment implémenter une recherche intelligente similaire à 3721 ? Par exemple, lorsque vous saisissez « Chinois » dans la zone des critères de recherche, des mots-clés tels que « Chine » et « personnes » sont automatiquement extraits et recherchés dans la base de données. Après avoir lu cet article, vous constaterez que cette fonction est si simple à mettre en œuvre.
La première étape consiste à créer une base de données nommée db_sample.mdb (cet article utilise la base de données Access2000 comme exemple) et à y créer la table T_Sample. La table T_Sample comprend les champs suivants :
ID Numéro automatique U_Name Texte U_Info Remarques
Dans la deuxième étape, nous commençons à concevoir la page de recherche Search.asp. Cette page comprend un formulaire (Frm_Search), qui comprend une zone de texte et un bouton de soumission. Et définissez l'attribut de méthode du formulaire sur "get" et l'attribut d'action sur "Search.asp", c'est-à-dire soumettez-le à la page Web elle-même. Le code est le suivant :
Voici l'extrait de code :
<!-- Search.asp -->
<nom du formulaire="frm_Search" méthode="get" action="Search.asp">
Veuillez saisir des mots-clés :
<input type="text" name="key" size="10">
<input type="submit" value="recherche">
</form>
Ensuite, nous entrons dans l'élément clé de la réalisation d'une recherche intelligente.
Tout d’abord, établissez une connexion à la base de données. Ajoutez le code suivant au début de Search.asp :
Voici l'extrait de code :
<%
Dim strProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Source de données="
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" Supposons que la base de données est stockée dans le répertoire de données sous le répertoire racine de la page d'accueil
Définir CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider ouvre la connexion à la base de données
%>
Ensuite, déterminez les données reçues par la page ASP et recherchez-les dans la base de données.
Voici l'extrait de code :
<font color="#FF0000">Aucun résultat trouvé ! ! ! </police>
<%
Autre
%>
Recherchez les éléments nommés "<font color="#FF0000"><%= S_Key %></font>", et un total de <font color="#FF0000"><%= RST.RecordCount %></font > est trouvé Objet : <p>
<%
Tandis que Not RST.EOF parcourt l'ensemble du jeu d'enregistrements, affiche les informations recherchées et définit le lien
%>
<!-- Cela peut être défini comme cible de lien dont vous avez besoin-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % ></a></fonte>
<!--Afficher quelques détails-->
<font style="font: 9pt 宋体"><%= Gauche(RST("U_Info"),150) %></font><p>
<%
RST.MoveNext
Wende
RST.Fermer
Définir RST=Rien
Fin si
Fin si
%>
Dans le code ci-dessus, il existe une fonction personnalisée AutoKey, qui est au cœur de la réalisation d'une recherche intelligente. Le code est le suivant :
Voici l'extrait de code :
<%
Fonction AutoKey(strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'Vérifiez la légalité de la chaîne, sinon, accédez à la page d'erreur. Vous pouvez définir la page d'erreur en fonction de vos besoins.
si InStr(strKey,"=")<>0 ou InStr(strKey,"`")<>0 ou InStr(strKey,"")<>0 ou InStr(strKey," ")<>0 ou InStr(strKey ," ")<>0 ou InStr(strKey,"")<>0 ou InStr(strKey,chr(34))<>0 ou InStr(strKey,"")<>0 ou InStr(strKey,", ")<>0 ou InStr(strKey,"<")<>0 ou InStr(strKey,">")<>0 puis
Réponse.Redirection "erreur.htm"
Fin si
lngLenKey=Len(strKey)
Sélectionnez le cas lngLenKey
Cas 0 S'il s'agit d'une chaîne vide, accédez à la page d'erreur
Réponse.Redirection "erreur.htm"
Cas 1 Si la longueur est 1, aucune valeur n'est définie
strNouveau=""
strNouveau2=""
'Case Else Si la longueur est supérieure à 1, commencez par le premier caractère de la chaîne et parcourez la sous-chaîne avec la longueur 2 comme condition de requête
Pour i=1 À lngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1 & " ou U_Name comme %" & strSubKey & "%"
strNew2=strNew2 & " ou U_Info comme %" & strSubKey & "%"
Suivant
Fin de la sélection
'Obtenir l'instruction SQL complète
AutoKey="Select * from T_Sample où U_Name comme %" & strKey & "% ou U_Info comme %" & strKey & "%" & strNew1 & strNew2
Fonction de fin
%>
Pour réaliser une recherche intelligente, l'essentiel est de regrouper automatiquement les mots-clés de recherche. Ici, nous utilisons la méthode de boucle sur une sous-chaîne de longueur 2. Pourquoi ne pas définir la longueur de la sous-chaîne sur 1, 3, 4 ou autre ? En effet, si la longueur de la sous-chaîne est inférieure à 2, soit 1, la fonction de regroupement des mots-clés sera perdue, et si la longueur de la sous-chaîne est supérieure à 2, certaines phrases seront perdues. Vous pouvez essayer de changer CONST lngSubKey=2 par d'autres nombres et vous verrez par vous-même lequel est le meilleur.
Enfin, n'oubliez pas de fermer la connexion de données pour libérer des ressources.
Voici l'extrait de code :
<%
CNN.Fermer
Définir CNN=Rien
%>
À ce stade, ce moteur de recherche intelligent est terminé. Vous pouvez également continuer à l'améliorer, comme l'ajout de pagination, de surbrillance et d'autres fonctions. D'accord, je ne vais pas faire perdre de temps à tout le monde, allons essayer.