É muito conveniente usar ASP para implementar funções de mecanismo de busca, mas como implementar busca inteligente semelhante a 3721? Por exemplo, quando você insere “povo chinês” na caixa de critérios de pesquisa, palavras-chave como “China” e “povo” são automaticamente extraídas e pesquisadas no banco de dados. Depois de ler este artigo, você descobrirá que esta função é muito simples de implementar.
O primeiro passo é criar um banco de dados chamado db_sample.mdb (este artigo usa o banco de dados Access2000 como exemplo) e criar nele a tabela T_Sample. A tabela T_Sample inclui os seguintes campos:
ID Número automático U_Name Texto U_Info Observações
Na segunda etapa, iniciamos o desenho da página de pesquisa Search.asp. Esta página inclui um formulário (Frm_Search), que inclui uma caixa de texto e um botão de envio. E defina o atributo method do formulário como “get” e o atributo action como “Search.asp”, ou seja, envie-o para a própria página web. O código é o seguinte:
Aqui está o trecho de código:
<!-- Pesquisa.asp -->
<form name="frm_Search" method="get" action="Search.asp">
Insira palavras-chave:
<input type="text" name="key" size="10">
<tipo de entrada = "enviar" valor = "pesquisar">
</form>
A seguir, entramos na parte principal da realização da pesquisa inteligente.
Primeiro, estabeleça uma conexão com o banco de dados. Adicione o seguinte código no início de Search.asp:
Aqui está o trecho de código:
<%
Dim strProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados="
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" Suponha que o banco de dados esteja armazenado no diretório de dados no diretório raiz da página inicial
Definir CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider abre a conexão com o banco de dados
%>
A seguir, determine os dados recebidos pela página ASP e pesquise-os no banco de dados.
Aqui está o trecho de código:
<font color="#FF0000">Nenhum resultado encontrado! ! ! </fonte>
<%
Outro
%>
Pesquise itens chamados "<font color="#FF0000"><%= S_Key %></font>" e um total de <font color="#FF0000"><%= RST.RecordCount %></font > é encontrado Item: <p>
<%
Enquanto Not RST.EOF percorre todo o conjunto de registros, exibe as informações pesquisadas e define o link
%>
<!-- Isso pode ser definido como o destino do link que você precisa-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % ></a></fonte>
<!--Mostre alguns detalhes-->
<font style="font: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
<%
RST.MoveNext
Wend
RST.Fechar
Definir RST=Nada
Terminar se
Terminar se
%>
No código acima, há uma função personalizada AutoKey, que é o núcleo da realização da pesquisa inteligente. O código é o seguinte:
Aqui está o trecho de código:
<%
Função AutoKey(strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'Verifique a legalidade da string, caso contrário, vá para a página de erro. Você pode definir a página de erro de acordo com suas necessidades.
if 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 então
Response.Redirect "erro.htm"
Terminar se
lngLenKey=Len(strKey)
Selecione Caso lngLenKey
Caso 0 Se for uma string vazia, vá para a página de erro
Response.Redirect "erro.htm"
Caso 1 Se o comprimento for 1, nenhum valor será definido
strNew1=""
strNew2=""
'Case Else Se o comprimento for maior que 1, comece no primeiro caractere da string e percorra a substring com comprimento 2 como condição de consulta
Para i=1 Para lngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1 & "ou U_Name como %" & strSubKey & "%"
strNew2=strNew2 & "ou U_Info como %" & strSubKey & "%"
Próximo
Finalizar seleção
'Obtém a instrução SQL completa
AutoKey="Selecione * de T_Sample onde U_Name como %" & strKey & "% ou U_Info como %" & strKey & "%" & strNew1 & strNew2
Função final
%>
Para realizar uma pesquisa inteligente, o principal é agrupar automaticamente as palavras-chave de pesquisa. Aqui, usamos o método de loop através de uma substring de comprimento 2. Por que não definir o comprimento da substring como 1, 3, 4 ou qualquer outro? Isso ocorre porque se o comprimento da substring for menor que 2, que é 1, a função de agrupar palavras-chave será perdida, e se o comprimento da substring for maior que 2, algumas frases serão perdidas. Você pode tentar alterar CONST lngSubKey=2 para outros números e verá por si mesmo qual é o melhor.
Por fim, não esqueça de fechar a conexão de dados para liberar recursos.
Aqui está o trecho de código:
<%
CNN.Fechar
Definir CNN=Nada
%>
Neste ponto, este mecanismo de busca inteligente foi concluído. Você também pode continuar a melhorá-lo, como adicionar paginação, destaque e outras funções. Ok, não vou perder o tempo de todo mundo, vamos tentar.