skymvc开发简易搜素引擎

skymvc开发简易搜素引擎

/*
* 作者 雷日锦 2016-05-24
*大家好,欢迎学习。今天给大家讲一个简易搜索引擎的开发。
*搜索引擎分为两部分:蜘蛛 和 全文索引
*演示地址:http://skycms.deitui.com/module.php?m=search
*/

/*
*广告时间
*想跟我学PHP的欢迎咨询QQ:362606856
*第一期 费用:3000元
*教学方式:网络教学 通过QQ或yy平台
*课程的目标:
*学会开发一套B2C网站
*知识点:
*php基础、jquery基础、mysql基础
*skymvc框架学习,其他主流框架(CI\thinkphp)介绍
*开源软件介绍(discuz\dedecms\ecshop)
*网站开发策划
*/

 

第一部分 蜘蛛的设计

蜘蛛采用skymvc自带的类库cls_spider.php  cls_solink. 
*cls_spider.php 简单封装curl_multi
*cls_solink 对网页内容进行解析 链接提取

 $sp=new Spider();
 $sp->start($urls,function($data){
	 print_r($data); 
 });
$solink=new solink($rdata);
$solink->get_content($rdata['content']);
$title=$solink->get_title();
$keywords=$solink->get_keywords();
$description=$solink->get_description();
$rp=parse_url($rdata['url']);
$links=$solink->get_link();

第二部分 全文索引 我们使用coreseek 

//建立索引
./bin/indexer -c ../etc/csft_mysql.conf searchd --rotate
./bin/indexer -c ../etc/csft_mysql.conf delta --rotate
./bin/indexer -c ../etc/csft_mysql.conf --merge searchd delta --rotate

//开启服务
./bin/searchd -c ../etc/csft_mysql.conf

索引模式“主索引+增量索引”
我们需要添加一个执行任务

5分钟合并一次增量索引 
每天生成一次主索引的

/*****mysql*******/

CREATE TABLE `sky_mod_search_config` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `threads` smallint(6) unsigned NOT NULL DEFAULT '20' COMMENT '线程数',
  `steps` tinyint(6) unsigned NOT NULL DEFAULT '9' COMMENT '采集深度',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='搜索-配置';


CREATE TABLE `sky_mod_search_domain` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(225) NOT NULL DEFAULT '' COMMENT '主题',
  `domain` varchar(255) NOT NULL DEFAULT '',
  `basedomain` varchar(255) NOT NULL DEFAULT '' COMMENT '一级域名',
  `url` varchar(300) NOT NULL DEFAULT '' COMMENT '首页',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '时间',
  `step` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '第几级',
  `selfsite` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '1 只采集自己当前域名的站 0.采集主域名及子域名 2.采集所有',
  PRIMARY KEY (`id`),
  KEY `url` (`url`,`dateline`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='搜索引擎-主题';

CREATE TABLE `sky_mod_search_sphinxcount` (
  `id` int(10) unsigned NOT NULL,
  `max_doc_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='增量索引ID';

CREATE TABLE `sky_mod_search_spider` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `url` varchar(300) NOT NULL DEFAULT '' COMMENT '地址',
  `islock` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '锁 1是 0否',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '时间',
  `step` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '第几级',
  `domain` varchar(32) NOT NULL DEFAULT '',
  `nolink` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是没链接',
  `basedomain` varchar(32) NOT NULL DEFAULT '' COMMENT '一级域名',
  PRIMARY KEY (`id`),
  KEY `url` (`url`,`dateline`),
  KEY `islock` (`islock`,`step`,`dateline`) USING BTREE,
  KEY `domain` (`domain`,`islock`,`step`,`dateline`),
  KEY `basedomain` (`basedomain`,`islock`,`step`,`dateline`)
) ENGINE=InnoDB AUTO_INCREMENT=67029 DEFAULT CHARSET=utf8 COMMENT='搜索引擎-蜘蛛';

CREATE TABLE `sky_mod_search_topic` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `url` varchar(300) NOT NULL DEFAULT '' COMMENT '地址',
  `islock` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '锁 1是 0否',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '时间',
  `last_time` int(10) unsigned NOT NULL DEFAULT '0',
  `step` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '第几级',
  `title` varchar(225) NOT NULL DEFAULT '' COMMENT '主题',
  `keywords` varchar(225) NOT NULL DEFAULT '' COMMENT '关键词',
  `description` varchar(225) NOT NULL DEFAULT '' COMMENT '描述',
  `grade` int(10) unsigned NOT NULL DEFAULT '0',
  `domain` varchar(255) NOT NULL DEFAULT '',
  `basedomain` varchar(255) NOT NULL DEFAULT '' COMMENT '一级域名',
  `content` mediumtext,
  PRIMARY KEY (`id`),
  KEY `url` (`url`,`dateline`)
) ENGINE=InnoDB AUTO_INCREMENT=1611 DEFAULT CHARSET=utf8 COMMENT='搜索引擎-主题';

 

转载于:https://my.oschina.net/lrjxgl2/blog/680425

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值