站内搜索引擎源码介绍
搜易站内搜索引擎5.9,高性能,高质量的站内搜索解决方案,面向已有站点,希望提升站内搜索质量和搜索速度的站长。也可以用于多异构系统或多站点实现站群统一搜索。
同时我们基于搜索技术延伸出聚合页SEO技术,用于快速生成长尾关键词页面数量,增加网站收录量,提升流量。
V5.9更新修正无法远程连接mysql 8.0数据库的BUG。
源码环境要求
软件版本:搜易站内搜索引擎V5.8
操作系统:Windows 7/10/2008/2012/2016
.NET版本:.NET FRAMEWORK 4.0
特别提醒:请先安装IIS,然后安装.NET FRAMEWORK 4.0,如果您先安装.NET 4然后安装IIS,那么请安装好后用aspnet_regiis.exe -i命令注册一下(该命令如何使用,请百度一下)
硬件要求
以下为参考的最低硬件配置要求:
数据量<100万,1核2G
数据量<1000万,2核4G
数据量>1000万,4核8G
搜索系统对硬盘要求比较高,索引目录所在盘建议为SSD
源码安装提示
一,确认是否符合上述系统运行环境要求
二,新建一个站点,建议独立应用程序池,拷贝全部文件到站点目录下,并设置data目录为可写,可修改权限。
三,进入admin/admincp.aspx,登录后台,密码帐号:admin ,默认密码:888888 ,为安全起见,建议登录后第一时间更改管理密码。
四,通过搜索类型菜单,新建搜索类型,具体按照提示操作即可。
安装篇:
一,WINDOWS 2008下安装搜易站内搜索引擎
1.1,windows 2008默认是没有安装.net framework 4.0(以下简称.NET4.0),请先从微软官方下载.NET4.0,点击下面链接进入下载页面:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718,如果你的服务器已经安装.NET4.0,可以跳过此步骤;
1.2,新建一个站点,程序池可以使用默认的ASP.NET V4.0程序池,可以新建一个程序池(.NET版本选4.0,管道模式选集成);
1.3,将搜易站内搜索引擎全部文件上传到刚刚建立的站点目录下,根目录赋予Users运行权限,data子目录赋予Users修改和写入权限;
1.4,浏览站点,能正确运行,且看到相关提示,表示安装成功,根据提示进入后台;
1.5,登录搜易站内搜索引擎管理后台
后台地址:admin/admincp.aspx
默认帐号:admin
默认密码:888888 (登录后请第一时间修改密码,确保安全)
其他操作系统请参照2008的安装。
安装常见问题解答
1,后台登录提示admin账号不存在
解决:c:windowstemp目录,给users设置修改权限;
2,WIN2008+IIS7运行出现提示:HTTP 错误404.2 – Not Found ,由于Web 服务器上的“ISAPI 和CGI 限制”列表设置,无法提供您请求的页面
解决:
1.打开Internet 信息服务(IIS)管理器
2.在“功能”视图中,双击“ISAPI 和CGI 限制”以确认Web 服务扩展被设置为“允许”。
3,出现HTTP错误404.3 not found。
解决:如果你是先安装.NET 4,然后安装IIS,用aspnet_regiis.exe -i命令注册一下。
4,数据量不大,为什么批量索引的时候总是会卡死,出错?
有用户反馈,批量索引的时候,总是很容易卡死,或者出错,把目前遇到的情况和处理方式总结如下:
1,有个别特别长的文章,这样会卡死,可以在索引设置处,设一个截取字符长度。比如3000等等。
2,有安全软件不断扫描索引目录,因为索引阶段,索引目录会不断变化,导致安全软件不断扫描导致冲突卡死
5,经常有用户反应点击“开始索引”无反应:
问题分析:点击“开始索引”,如果配置错误会报错,正常情况下会有“正在进行第X批次…”的进度提示。
解决方案:建议使用chrome,如使用其他浏览器,请确认在极速模式下使用。
配置站内搜索
本系统的原理是先把数据库的数据生成倒排索引,索引完毕后,搜索的时候无需访问数据库。所以使用本系统构建站内搜索的第一步就是需要为数据库的数据建立索引:
1,进入后台,点击进入“搜索类型”管理页面,然后点击“添加搜索类型”,根据提示填入名称,数据库配置等信息,保存后回自动回到“搜索类型”页面,可看到刚刚创建的搜索类型,按页面底部提示操作,导入数据,生成索引。
2,添加搜索类型的时候,会涉及到单表汇入或多表汇入数据的情况,单表比较简单,按提示操作就可以了。下面主要说说多表的情况,多表的时候,需要填写自定义SQL来告知系统如何导入,导入那些数据,比如以下以一个常见的多表的场景来说明:
标题和内容分表情况下如何使用?
MYSQL部分以常用的PHPCMS为例:
自定义SQL,还是以PHPCMS为例,因为PHPCMS的标题和内容在2个表中,所以先把这2个表关联起来
select * from v9_news t1 inner join v9_news_data t2 on t1.id = t2.id where t1.id > {0} order by t1.id asc limit {1}
重建索引,OK了!
其中需要特别说明的是占位符{0}和{1},因为系统是按批次读数据生成索引,所以每次生成完毕,为了下一次能实现增量索引,不重复读取数据,会记录一个最大的ID,{0}就表示这个最后的ID,系统运行时会自动替换,{1}表示每批次读取的数据量,这个值是在索引的时候的灵活设置的。另外order by必须是asc的,不能是desc,切记!
MSSQL数据库也是类似的:
select top {1} * from tb1 t1 inner join tb2 t2 on t1.id = t2.id where id > {0} order by id asc
其中占位符{0}和{1}的含义跟上面的MYSQL例子是一样的。另外order by必须是asc的,不能是desc,切记!
搜索场景与解决方案
【搜索场景:整合搜索框到其他页面】
我安装了搜易站内搜索引擎,由于搜易站内搜索引擎需要独立的站点,那么在网站首页的搜索框如何集成到这个系统。
【解决方案】
如果您的网站的页面的编码是UTF-8的话:
<form method="get" target="_blank" action="http://so.yourdomain.com/search.aspx"> <input type="text" name="q" value="" /> <input type="submit" value="搜索" /> </form>
如果您的网站的编码不是UTF-8编码,则需要增加一个隐藏域,告知您的网站的编码格式
以gb2312为例,如下:
<form method="get" target="_blank" action="http://so.yourdomain.com/search.aspx"> <input type="hidden" name="e" value="gb2312" /> <input type="text" name="q" value="" /> <input type="submit" value="搜索" /> </form>
如果您希望限定搜索类型,比如只搜索文章(假定您的搜索类型唯一名称为article),在搜索域的里面新增加一个隐藏字段:
<input type="hidden" name="s" value="article" />
注意name的参数名,必须按例子的填写,q表示关键词,e表示编码,s表示类型限定。