Ao construir um site, o chefe me pediu para implementar uma função de pesquisa como o Baidu. No passado, o ASP implementava pesquisas difusas e consultas correspondentes. sem chance. Pesquisando na Internet, descobri que existem vários métodos fornecidos na Internet. Um é construir um dicionário de sinônimos, o outro é usar componentes de segmentação de palavras e o terceiro é o que estou falando, tecnologia de segmentação automática de palavras, mas é. não é uma segmentação inteligente de palavras, é apenas combinar palavras alternadas. O melhor é construir um vocabulário e expandi-lo com base nas informações do usuário, mas para sites de pequeno e médio porte isso pode não ser necessário.
Este é o terceiro tipo de pesquisa por segmentação de palavras de que estou falando. O código é o seguinte: não entrarei em como usá-lo.
<%
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
%>