O uso do ASP para implementar as funções dos mecanismos de pesquisa é muito conveniente, mas como implementar pesquisas inteligentes? Depois de ler este artigo, você descobrirá que é realmente muito simples implementar essa função. Vamos seguir o editor do New Technology Channel errado para saber mais!
Etapas para implementar a pesquisa inteligente do ASP
O primeiro passo é criar um banco de dados chamado db_sample.mdb (este artigo usa o número do Access2000
O banco de dados é usado como exemplo) e crie uma tabela T_Sample nele. A tabela T_Sample inclui os seguintes campos:
Id numeração automática
Text u_name
Notas u_info
Na segunda etapa, começamos a projetar a página de pesquisa search.asp. Esta página inclui um formulário
(FRM_SEARCH), o formulário inclui uma caixa de texto e um botão de envio. E colocar o método do formulário
Defina a natureza como "Get" e o atributo de ação está definido como "Search.asp", o que significa enviá -lo para a própria página da web. O código é o seguinte
:
Digite palavras -chave:
Em seguida, inserimos a parte principal da implementação de pesquisa inteligente.
Primeiro, estabeleça uma conexão com o banco de dados. Adicione o seguinte código ao início do Search.asp:
<%
Dim StrProvider, CNN
strProvider = "Provedor = Microsoft.Jet.oledb.4.0; Data Source ="
strProvider = strProvider & server.mappath ("/") &
"/data/db_sample.mdb" 'Suponha que o banco de dados seja armazenado no diretório de dados no diretório raiz da página inicial
Set cnn = server.createObject ("adodb.connection")
CNN.OPEN STRPROVER 'Open Database Connection
%>
Em seguida, julgue os dados recebidos pela página ASP e pesquise no banco de dados.
<%
Dim S_KEY, RST, STRSQL
S_KEY = TRIM (request ("key")) 'Obtenha o valor da palavra -chave de pesquisa
Se S_KEY <> "" então
Set rst = server.createObject ("adodb.recordset")
StrSQL = Autokey (s_key) 'A função personalizada Autokey () é usada aqui, a função
O número é o núcleo da pesquisa inteligente
Rst.open strsql, cnn, 3,2 'obtenha o registro pesquisado
Se rst.bof e rst.eof então
%>
Nenhum resultado foi encontrado! ! !
<%
Outro
%>
O nome da pesquisa é "< %= s_key %
O item de> "foi encontrado no total < %= rst.recordCount %
> Item:
<%
Embora não seja rst.eof 'viaje todo o registro definido para exibir as letras pesquisadas
e configurar links
%>
href = "info.asp? id = <%= rst (" id ")%>" target = "_ blank"> <%= rst ("u_name")
%>
<%= Esquerda (RST
("U_info"), 150) %>>
<%
RST.Movenext
Wend
Rst.close
Definir rst = nada
Final se
Final se
%>
No código acima, há uma função personalizada Autokey, que é o kernel que implementa pesquisas inteligentes
Onde está o coração. O código é o seguinte:
<%
Função Autokey (strkey)
Const lngsubkey = 2
Dim lnglenkey, strnew1, strnew2, i, strsubkey
'Verifique a legalidade da string, se não for legal, vá para a página de erro. Você pode fazer a página de erro conforme necessário
Fazer configurações.
Se Instr (Strkey, "=") <> 0 ou Instr (Strkey, "` ") <> 0 ou Instr
(strkey, "'") <> 0 ou instrument (strkey, "") <> 0 ou instrky (strkey, "") <> 0 ou instrky (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 instrument
(strkey, ">") <> 0 Então
Response.Redirect "Error.htm"
Final se
lnglenkey = len (strkey)
Selecione Case Lnglenkey
Caso 0 'Se for uma string vazia, vá para a página de erro
Response.Redirect "Error.htm"
Caso 1 'Se o comprimento for 1, nenhum valor será definido
strNew1 = ""
strNew2 = ""
Caso mais 'Se o comprimento for maior que 1, comece a partir do primeiro caractere da corda e tome o comprimento como
Substring de 2 como condições de consulta
Para i = 1 a lnglenkey- (lngsubkey-1)
Strsubkey = Mid (Strkey, I, Lngsubkey)
strNew1 = strNew1 & "ou u_name como '%" & strsubkey
& "%'"
strNew2 = strNew2 & "ou u_info como '%" & strsubkey
& "%'"
Próximo
Final Selecione
'Obtenha a declaração completa do SQL
Autokey = "Selecione * de T_Sample onde u_name como '%" e strkey
& "%'ou u_info como'%" & strkey & "%'" & strnew1 & strnew2
Função final
%>
Para obter pesquisa inteligente, o núcleo é agrupar automaticamente as palavras -chave de pesquisa. Aqui fazemos
O método de loop em substâncias com comprimento 2 é usado. Por que não definir o comprimento da substring para 1, 3, 4 ou algo assim?
Isso ocorre porque se o comprimento da substring for menor que 2, ou seja, 1, a função do agrupamento de palavras -chave será perdida e se o comprimento da substring for
Se maior que 2, algumas frases serão perdidas. Você pode mudar const lngsubkey = 2 para outros números e experimentá -lo
, está claro qual é o melhor ou pior.
Por fim, não se esqueça de desativar a conexão de dados para liberar recursos.
<%
Cnn.close
Defina CNN = nada
%>
O exposto acima é como implementar pesquisas inteligentes. Para mais conhecimento técnico, continue prestando atenção ao novo canal de tecnologia errada!