您所在的位置:小祥子 » 代码研究 » 正文

第八期:从瑞洽源码网整站源代码研究ASP自动分词技术

时间:2015-02-13 编辑:本站 来源:本站原创

平时没事就喜欢下载一些别人的源码研究,看看其中比较好用的方法函数,收为己用。今天为大家分析的是瑞洽源码网整站源代码的Parts/Function.ASP文件。

轮子不用发明两次,写好的功能也是如此,写一个自动对网站标题进行分词的功能,那么思路应该是这样:首先有一个等着被分词的字符串,一般用标题,再一个是词库,从一段话里知道哪些是一个词,然后分离出来,分离后进行简单的过滤,有的词在一句话里可能出现两遍,我们只需要一遍就行了。

举个例子,本文《从瑞洽源码网整站源代码研究ASP自动分词技术》可以分为“瑞洽”,“源码”,“整站”,“源代码”,“研究”,“ASP”,“自动”,“分词”,“技术”,但由于第一个是人家的网站名称,所以不在我们的词库,应该不用分到。

方法函数如下

Function cn_split(str, x)
    Dim a, b 'As String
    Dim i, j, flag, max, temp_str
 Dim Fso,MyFso,TxtContent
 Set Fso=Server.CreateObject("Scripting.FileSystemObject")
 Set MyFso=Fso.OpenTextFile(Server.mappath("keyword.txt"))
 TxtContent=MyFso.ReadAll
 b="|" & Replace(TxtContent,vbcrlf,"|") & "|"
 Set MyFso=nothing
 Set Fso=nothing
    a = str
    '分词
    For i = 1 To Len(a)
        For j = 2 To x
            a = a & Mid(a, i, j) & " "
        Next
    Next
    a = Split(a, " ")
    max = UBound(a)
    '过滤重复字符串
    For i = 0 To max - 1
   flag = a(i)
    For j = i + 1 To max - 1
     If a(j) = flag And flag <> "" Then
      a(j) = ""  
     End If
    Next
    If a(i) <> "" Then
     temp_str = temp_str & a(i) & " "
    End If
 Next

     a = Split(temp_str, " ")
   temp_str = ""
   For i=0 to Ubound(a)
    If Instr(b,"|" & a(i) & "|")<>0 Then
     temp_str =  temp_str&"<a href=""/search.asp?keyword="&a(i)&""" target=""_blank"">"&a(i)&",</a> "
        end if
   Next
 cn_split=temp_str
      If Len(cn_split) > 0 Then
              '删除最后一个逗号
               cn_split = Mid(cn_split, 1, Len(cn_split) - 5)&"</a>"
               End If
End Function

词库keyword.txt如下

源码
整站
源代码
研究
ASP
自动
分词
技术

使用方法

<%=cn_split("从瑞洽源码网整站源代码研究ASP自动分词技术",3)%>

得到结果

源码 整站 源代码 研究 ASP 自动 分词 技术(都带超级链接 链接到搜索页,也可以自行修改为自己网站的搜索页面)