|
|
在此分享出来给大家,是会员花钱分享的开源版,希望对大家有用,切记好好珍惜,不要随意转载。
2 l. e. K/ m& t0 G- ^3 i1 ^6 x搜猫搜索引擎_V9.0 正式版修复介绍:
. q( ?4 @. \8 I) Z1、整合Sphinx、倒排索引、PHPCWS分词系统,后台轻松一键创建索引和分词2、程序实现10亿数据的承载量,搜索永久小于1秒3、新增:充值卡系统、可以生成各种面额的充值卡、轻松充值积分进行竞价排名4、整合支付宝API接口,可以用支付宝免费积分积分进行竞价排名5、推广平台、搜索结果页右侧推广和开放平台实现智能规则排名,竞价同一关键词时以积分多少显示前三名推广的链接
" T1 i3 q7 a3 R" w& @
9 O4 H3 `8 h7 _搜猫V8 Beta5.0修复介绍:* L8 Q: R: h+ m, q; ?2 j
¤ 实现了PHP+MYSQL+Sphinx的整合工作0 o. ]/ j; E5 N0 L
¤ 优化蜘蛛程序,整合Crawler爬虫代码、自动下载采集数据到本地调用,实现本地索引功能。( A5 z1 X# X& ^4 H& b
¤ 优化蜘蛛功能,实现蜘蛛智能去除死链接,实现多线程采集,默认蜘蛛开启数为20个,也就是说可以同时开启20个蜘蛛同时工作,这个根据你的服务器的配置来定,服务器越好开启的越多,采集的数据越多。理论值:日采集数据不低于1000000条信息。, |$ B/ A' j2 y6 s* q( F1 D2 b) i
【PHP+Mysql+Sphinx 说明】
, B& X, u. k% d! U X- x. D9 W 出自俄罗斯的开源全文搜索引擎软件 Sphinx ,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。
: t: b# u% P* r; h- \( i基于以上几点,我设计出了这套搜索引擎架构。在生产环境运行了一周,效果非常不错。有时间我会专为配合Sphinx搜索引擎,开发一个逻辑简单、速度快、占用内存低、非表锁的MySQL存储引擎插件,用来代替MyISAM引擎,以解决MyISAM存储引擎在频繁更新操作时的锁表延迟问题。另外,分布式搜索技术上已无任何问题。
) ]* G5 @# Y( ^/ j% j一、搜索引擎架构设计:
! m+ M4 b( r1 f" m, _( m0 j. G1、搜索引擎架构图:
" h( L+ L5 ^1 A5 m, x% }% _1 k& L' Q) E2 H/ m
6 @8 `8 c0 d A- W ^! p' b0 Z# |+ Z8 e2、搜索引擎架构设计思路:5 A* }5 ?( V9 U1 C2 U0 { g3 |* [
(1)、调用方式最简化:
$ V9 @* K( z6 C; `尽量方便前端Web工程师,只需要一条简单的SQL语句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query='...';”即可实现高效搜索。
' q! N- ?+ v& c# S1 {- W(2)、创建索引、查询速度快:
/ S9 J) s! j! T6 D$ P①、Sphinx Search 是由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。. `/ }9 l0 g, r) P; {
Sphinx的特征:
1 p( t) ~3 k# M L1 E5 F) `0 A+ {8 ]6 h2 ]Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒)高性能搜索(在2-4 GB的文本上搜索,平均0.1秒内获得结果)高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录)支持分布式检索支持基于短语和基于统计的复合结果排序机制支持任意数量的文件字段(数值属性或全文检索属性)支持不同的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)支持作为Mysql的存储引擎②、通过国外《High Performance MySQL》专家组的测试可以看出,根据主键进行查询的类似“SELECT ... FROM ... WHERE id = ...”的SQL语句(其中id为PRIMARY KEY),每秒钟能够处理10000次以上的查询,而普通的SELECT查询每秒只能处理几十次到几百次:, Q3 i1 ]; q3 w* Y. U
* |- |2 b" l4 o5 p* x
3 K( I0 B) [ C+ [; `! z
③、Sphinx不负责文本字段的存储。假设将数据库的id、date、title、body字段,用sphinx建立搜索索引。根据关键字、时间、类别、范围等信息查询一下sphinx,sphinx只会将查询结果的ID号等非文本信息告诉我们。要显示title、body等信息,还需要根据此ID号去查询MySQL数据库,或者从Memcachedb等其他的存储中取得。安装SphinxSE作为MySQL的存储引擎,将MySQL与Sphinx结合起来,是一种便捷的方法。
5 N4 Z, C+ ]. |1 g+ S7 r创建一张Sphinx类型表,将MyISAM表的主键ID和Sphinx表的ID作一个JOIN联合查询。这样,对于MyISAM表来所,只相当于一个WHERE id=...的主键查询,WHERE后的条件都交给Sphinx去处理,可以充分发挥两者的优势,实现高速搜索查询。3 |4 a! ?5 ^) ~1 D5 S# `% H
(3)、按服务类型进行分离:7 r4 S8 U. Q' _6 g b
为了保证数据的一致性,我在配置Sphinx读取索引源的MySQL数据库时,进行了锁表。Sphinx读取索引源的过程会耗费一定时间,由于MyISAM存储引擎的读锁和写锁是互斥的,为了避免写操作被长时间阻塞,导致数据库同步落后跟不上,我将提供“搜索查询服务”的和提供“索引源服务”的MySQL数据库进行了分开。监听3306端口的MySQL提供“搜索查询服务”,监听3406端口的MySQL提供“索引源服务”。3 o7 t R6 b; T5 z
(4)、“主索引+增量索引”更新方式:
/ A, @3 o/ ]# @一般网站的特征:信息发布较为频繁;刚发布完的信息被编辑、修改的可能性大;两天以前的老帖变动性较小。! Q2 I; G: O3 A5 W% q
基于这个特征,我设计了Sphinx主索引和增量索引。对于前天17:00之前的记录建立主索引,每天凌晨自动重建一次主索引;对于前天17:00之后到当前最新的记录,间隔3分钟自动重建一次增量索引。
* {2 x6 G9 P: x(5)、“Ext3文件系统+tmpfs内存文件系统”相结合:# s; a6 O2 H: j* Z+ j) o! L
为了避免每3分钟重建增量索引导致磁盘IO较重,从而引起系统负载上升,我将主索引文件创建在磁盘,增量索引文件创建在tmpfs内存文件系统“/dev/shm/”内。“/dev/shm/”内的文件全部驻留在内存中,读写速度非常快。但是,重启服务器会导致“/dev/shm/”内的文件丢失,针对这个问题,我会在服务器开机时自动创建“/dev/shm/”内目录结构和Sphinx增量索引。) B* W+ O# [: v& J7 O: Y) ~
(6)、中文分词词库:
* P; Q3 |+ M- J) r' Y我根据“百度早期中文分词库”+“搜狗拼音输入法细胞词库”+“LibMMSeg高频字库”+... 综合整理成一份中文分词词库,出于某些考虑暂不提供。你可以使用LibMMSeg自带的中文分词词库。" D ^1 s+ r) c( f
5 B7 i1 ^4 x* F& l$ I
: Q6 [9 L: ]7 g. W% w: M
# s% [1 u: B" T) F% Y1. 实现MP3搜索功能。5 L7 ^8 |% n! }) T0 B$ |4 k
2. 实现了图片搜索功能
0 H6 x( p( N. i( q- h6 P: [3. 实现网盘搜索引擎,3 z% G2 X# W% E! f+ w: |& @
4. 增加搜猫蜘蛛客户端程序,可以自定义时间收录,自定义刷新收录,增加掉线自动连接蜘蛛功能,自定义截图功能,真正实现了无人坚守自动完成收录和每天实现收录过万的问题,使客户只要不关闭电脑,打开蜘蛛程序链接蜘蛛,设置自定义 之后 可以做其他,客户端程序可以智能做到一切。
" b6 c1 @7 D) p, s5.增加仿百度贴吧和知道程序,真正实现了仿百度的特征。
) V; t1 s. n& l# a [6.完善开放平台,使开放平台基本和百度一模一样。0 I+ `' H: F7 V. S2 e% ^
7.数据库和蜘蛛里增加索引功能,是搜索速度大大提高了10倍
, Y) X2 q* V) S% q0 I4 r8.加上了自动链功能,完美结合到搜索结果上。自动链即别人做上你的网站链接,系统自动收录别人的网址,来的IP越多,排名越前,网站宣传的好功能。
: {. z& W3 n; J. R' ~0 t
?; i) O1 Y8 D$ Q安装说明:
% s( m7 B2 P M, P/ }" K+ Q
3 Y' A# U. \4 D2 |5 Z1 f! t' q本帖隐藏的内容
/ u5 ]; m6 J8 a) |/ s& |; C- l$ |1.把压缩包解压到网站的根目录。
! D$ U; N& s( i, u4 M1 K 2.恢复备份 http://域名/dg 用户名 admin 密码 123456 步骤:参数设置(填上你的数据库帐号与密码)---恢复数据--选择目录--caogen81230530com-选中你的数据库--开始恢复。5 |2 L4 B V. _$ d
3.修改数据库链接文件
5 [" n# P) a* E. e 搜猫 :include/db_config.php , C y" I3 m, s9 W: J
贴吧:ieba/database/config_mysql.php
4 v( n8 r n' Z6 o( q/ `3 b9 K
+ N; Q: ?" N: u4 G' h/ D' [: K$ Z
( Z8 w: F S3 ]( N, n0 P) lOK,进前台 http://域名/admin admin 123456789xxx
6 y! V+ |( }8 K9 A+ J: O
- p' l/ k5 X, w; t7 l5 Q8 N+ a$ |1 v2 F% ~5 W' M @% r( o2 ]
! W+ y% h4 ` g- m
) H4 ], o' H. v& \5 Z$ ], B* A9 E2 p- R8 L
! m) d- V5 X7 H
$ z! n7 D' A% S1 c/ R! u8 F1 ^) `3 ]8 v1 N: s" N/ ?+ l8 x
+ C: L* Y0 _3 I6 u. I9 p& Q" x% ]9 H! k" h8 J/ u
( N5 W; W' C6 u: S- t" i# K, x* i# [0 T8 Y4 }% f& p
) q5 @ J+ @2 |, A, z. _/ B
5 e* J% z8 U4 t) ?
|
评分
-
查看全部评分
|