skymvc開發簡易搜素引擎

skymvc開發簡易搜素引擎php

/*
* 做者 雷日錦 2016-05-24
*你們好,歡迎學習。今天給你們講一個簡易搜索引擎的開發。
*搜索引擎分爲兩部分:蜘蛛 和 全文索引
*演示地址:http://skycms.deitui.com/module.php?m=search
*/mysql

/*
*廣告時間
*想跟我學PHP的歡迎諮詢QQ:362606856
*第一期 費用:3000元
*教學方式:網絡教學 經過QQ或yy平臺
*課程的目標:
*學會開發一套B2C網站
*知識點:
*php基礎、jquery基礎、mysql基礎
*skymvc框架學習,其餘主流框架(CI\thinkphp)介紹
*開源軟件介紹(discuz\dedecms\ecshop)
*網站開發策劃
*/jquery

 

第一部分 蜘蛛的設計sql

蜘蛛採用skymvc自帶的類庫cls_spider.php  cls_solink. 
*cls_spider.php 簡單封裝curl_multi
*cls_solink 對網頁內容進行解析 連接提取thinkphp

$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 --rotatemvc

//開啓服務
./bin/searchd -c ../etc/csft_mysql.confapp

索引模式「主索引+增量索引」
咱們須要添加一個執行任務框架

5分鐘合併一次增量索引 
天天生成一次主索引的dom

/*****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='搜索引擎-主題';
相關文章
相關標籤/搜索