Es muy conveniente utilizar ASP para implementar funciones de motor de búsqueda, pero ¿cómo implementar una búsqueda inteligente similar a 3721? Por ejemplo, cuando ingresa "pueblo chino" en el cuadro de criterios de búsqueda, palabras clave como "China" y "pueblo" se extraen y buscan automáticamente en la base de datos. Después de leer este artículo, descubrirá que esta función es muy sencilla de implementar.
El primer paso es crear una base de datos llamada db_sample.mdb (este artículo usa la base de datos Access2000 como ejemplo) y crear la tabla T_Sample en ella. La tabla T_Sample incluye los siguientes campos:
ID Número automático U_Name Texto U_Info Comentarios
En el segundo paso, comenzamos a diseñar la página de búsqueda Search.asp. Esta página incluye un formulario (Frm_Search), que incluye un cuadro de texto y un botón de envío. Y establezca el atributo de método del formulario en "obtener" y el atributo de acción en "Search.asp", es decir, envíelo a la página web. El código es el siguiente:
Aquí está el fragmento de código:
<!-- Buscar.asp -->
<nombre del formulario="frm_Search" método="get" action="Search.asp">
Por favor ingrese palabras clave:
<tipo de entrada="texto" nombre="clave" tamaño="10">
<tipo de entrada="enviar" valor="búsqueda">
</formulario>
A continuación, ingresamos la parte clave para realizar una búsqueda inteligente.
Primero, establezca una conexión a la base de datos. Agregue el siguiente código al comienzo de Search.asp:
Aquí está el fragmento de código:
<%
Dim strProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Fuente de datos="
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" Supongamos que la base de datos está almacenada en el directorio de datos bajo el directorio raíz de la página de inicio
Establecer CNN = Server.CreateObject ("ADODB.conexión")
CNN.Open strProvider abre la conexión de la base de datos
%>
A continuación, determine los datos recibidos por la página ASP y búsquelos en la base de datos.
Aquí está el fragmento de código:
<font color="#FF0000">¡No se encontraron resultados! ! ! </fuente>
<%
Demás
%>
Busque elementos llamados "<font color="#FF0000"><%= S_Key %></font>" y un total de <font color="#FF0000"><%= RST.RecordCount %></font. > se encuentra Artículo: <p>
<%
Mientras que Not RST.EOF recorre todo el conjunto de registros, muestra la información buscada y establece el enlace
%>
<!-- Esto se puede configurar como el destino del enlace que necesita-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % ></a></fuente>
<!--Mostrar algunos detalles-->
<font style="fuente: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
<%
RST.MoverSiguiente
Encaminarse a
RST.Cerrar
Establecer RST=Nada
Terminar si
Terminar si
%>
En el código anterior, hay una función personalizada AutoKey, que es el núcleo para realizar una búsqueda inteligente. El código es el siguiente:
Aquí está el fragmento de código:
<%
Función AutoKey(strKey)
CONST IngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'Comprueba la legalidad de la cadena, si no, ve a la página de error. Puede configurar la página de error según sus necesidades.
si InStr(strKey,"=")<>0 o InStr(strKey,"`")<0 o InStr(strKey,"")<>0 o InStr(strKey," ")<>0 o InStr(strKey ," ")<>0 o InStr(strKey,"")<>0 o InStr(strKey,chr(34))<>0 o InStr(strKey,"")<0 o InStr(strKey,", ")<>0 o InStr(strKey,"<")<0 o InStr(strKey,">")<0 entonces
Respuesta.Redireccionamiento "error.htm"
Terminar si
lngLenKey=Len(claveClave)
Seleccionar caso lngLenKey
Caso 0 Si es una cadena vacía, vaya a la página de error
Respuesta.Redireccionamiento "error.htm"
Caso 1 Si la longitud es 1, no se establece ningún valor
strNew1=""
strNew2=""
'Case Else Si la longitud es mayor que 1, comience desde el primer carácter de la cadena y recorra la subcadena con una longitud de 2 como condición de consulta.
Para i=1 a lngLenKey-(lngSubKey-1)
strSubKey=Medio(strKey,i,lngSubKey)
strNew1=strNew1 & " o U_Name como %" & strSubKey & "%"
strNew2=strNew2 & " o U_Info como %" & strSubKey & "%"
Próximo
Finalizar selección
'Obtenga la declaración SQL completa
AutoKey="Seleccione * de T_Sample donde U_Name como %" & strKey & "% o U_Info como %" & strKey & "%" & strNew1 & strNew2
Función final
%>
Para realizar una búsqueda inteligente, lo principal es agrupar automáticamente las palabras clave de búsqueda. Aquí, utilizamos el método de recorrer una subcadena de longitud 2. ¿Por qué no establecer la longitud de la subcadena en 1, 3, 4 o lo que sea? Esto se debe a que si la longitud de la subcadena es menor que 2, que es 1, se perderá la función de agrupar palabras clave, y si la longitud de la subcadena es mayor que 2, se perderán algunas frases. Puedes intentar cambiar CONST lngSubKey=2 a otros números y verás por ti mismo cuál es mejor.
Finalmente, no olvide cerrar la conexión de datos para liberar recursos.
Aquí está el fragmento de código:
<%
CNN.Cerrar
Establecer CNN=Nada
%>
En este punto, este motor de búsqueda inteligente ha sido completado. También puedes seguir mejorándolo, como agregar paginación, resaltado y otras funciones. Está bien, no haré perder el tiempo a todos, vamos a intentarlo.