回 帖 发 新 帖 刷新版面

主题:怎么用ASP做一个正真属于自己的搜索引擎

此文章来自
http://blog.dadao40.com/u/lovehuahua/archives/2007/290.html
可以点击击此链接.获得更多信息
 
在好多论坛上都看见想怎么做一个自己的搜索引擎..功能如google,baidu
可都没用真正很好的答案.一般都是要么很死的那个行不通的方法.
要么就是只调用google,baidu等的方法.
那怎么才能做一个正真属于自己的搜索引擎呢?
不管是做为站内搜索也好.用作像google等搜索引擎的功能也好.
今天有空我就来说说.让大家参考一下.
当然.我这里只说一下核心的技术.要不要说也说不完了.对吧.再怎么说那是一个很复杂的系统了.
 
作为一个搜索引擎,首先它要能收到自己站点,或他人站点的页面,也就是说的爬虫,
然后对每一个页面分析,提取内容.链接(链接作为收录爬虫用,总不至于只收录主页吧,呵呵)
然后对内容分词,因为我们是中国人,.用的是中文.所以对内容要中文分词功能.(其实这也是一搜索引擎的核心技术了)
然后就是对所得信息的数据存放.因作为搜索引擎,收录的页面是很多很多的.如果浸透据存方结构不好.一存放的数量会很大.,二是在搜索的时候要能尽量快的在几万或几十万或更多的页面中搜到你想要的页面.这此都是很关键的问题.
 
这此问题都解决了.也就基本完成了一个搜索引擎.
 
那具体怎么做呢?
首先.我们要弄到一个较好的词库,来给中文分词功能使用.
因为我的BLOG只能上传最大400K的文件.所以没办法.我把这个词库存放在了
http://ask.dadao40.com/sharev.asp?id=55
里面.    大家可以进入后下载此词库,
 
然后我们来看一下怎么做数据库存储结构.
这里我用SQL数据库来做.
因为即然是搜索引擎.再用access来做也太不现实了..这种小数据库,我们就不应该用在这种地方了.当然如果你喜欢.你也可以用.
 
下面是创建数据库及结构的SQL语句.(习惯了用SQL查询器来做了,呵呵)
--创建数据库
create database MissHer
go
--选择数据库
use MissHer
go
--创建词库数据库
--drop table search_word_db
create table search_word_db
(
word_id bigint identity(1,1) primary key not null,
word_key varchar(50) not null,
word_info varchar(200)
)
go
--select count(*) from search_word_db

create table search_url_db
(
url_id bigint identity(1,1) primary key not null,
url_addr varchar(200),
url_title varchar(50),
url_con ntext,
url_uptime datetime,
url_get int default 0
)
go
create table wordtourl
(
word_id bigint foreign key references search_word_db(word_id) on delete cascade on update cascade,
url_id varchar(3000),
word_show varchar(3000)
)
go
select * from search_url_db
 
数据库也创建完成了.
search_word_db为字库数据表.
而刚才的下载的词库为一个文本文件.我们应该把里面的所有词都写入这个表内.(按顺序都写入表)
有十五万个.当然不能用手动来操作了.大家可以用一下程序.自动写入,具体写法方法.我这里先不说了.时间问题.有时间等一下再说.)
数据表如:
word_id         word_key       word_info
2                            一个             NULL
3                            我们             NULL
4                            时间             NULL
5                            中国             NULL
.......                        ......              .......
 
这里再说三个表间关系吧.
search_word_db为字库数据表.
search_url_db为页面地址及信息表
wordtoutl为字库跟页面地址的关系表
 
我们搜索的过程是.
对于要查找的内容称分词.对于每一个词去search_word_db得到词库的词ID
再去search_url_db里查出此ID所关系的URL_ID
再由URL_ID去wordtourl得到结果.列了页面
(我们的结果是按查找关内容的词在这此页面中出现的次数来排列.)
当然你也可以做成点击来排列.再可以二者结合.
 
差不多.简单一点.进入主题吧/
 
现在我们怎么来做收录吧.
 
由于字符数限制,无法写下来了.不好意思.所有内容请查看下面页面吧.
http://blog.dadao40.com/u/lovehuahua/archives/2007/290.html
所有内容都有详细说明.
 

回复列表 (共2个回复)

沙发

sf

板凳

村落

我来回复

您尚未登录,请登录后再回复。点此登录或注册