http://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/Nw2VDyvCpPt_GG5YKTQuUQ
?
序言
咳咳,这里是青空酱。准备最近开一个天坑,讲讲个人如何从无到有搭建一个自用的大数据检索库。
这将会是一个层层相扣,依次衔接的系列教程,内容覆盖了:相关数据索引软件的选择与安装配置,多元化数据的清洗导入与维护,以及自定义查询API的定义与查询应用前后端的构建步骤….并且会将个人总结的一些trick与坑点会穿插于其中,尽力去打造一套能给读者有所裨益的教程。
教程规划为三节;
- 工库的介绍与索引引擎的选择与安装配置。
- 相关数据的清洗导入与维护
- 一步步教你查询应用前后端的开发
最后还请大家持续关注本教程(毕竟我也不是什么鸽子)
?
工库的传说
在谈 工库之前,我们先说说什么是 工(即 会工程学),有几个 会工程学的概念需要了解:1. 会工程学攻击都建立在使人决断产生认知偏差的基础上,熟练的 会工程师都是擅长进行信息收集的身体力行者。 2. 会工程学是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 3. 会工程学是一种黑客攻击方法,利用欺骗等手段骗取对方信任,获取机密情 。 4. 会工程学是一种利用人性脆弱点、贪婪等等的心理表现进行攻击,是防不胜防的。
相关的 工库学习操作可以来合天 安实验室操作实验—— 会工程学是一种利用人的弱点如人的好奇心、信任、贪便宜等弱点进行诸如欺骗、伤害等危害手段。了解 会工程学手段,可以大概率地帮助我们不受骗噢!
点击:
“
http://www.hetianlab.com/expc.do?ec=
ECIDee9320adea6e062017101116540900001”可预览学习!
?
工库,是 会工程学中所用到的数据库。
上面提到了, 会工程学的一个维度就是信息搜集,比如指定一个手机 ,就能获取到这个手机 背后的主人信息,包括姓名、邮箱、身份证、籍贯、 交账 等等信息,这些信息就是 工库。
一句话解释:
工库就是给一个账 就能查出 主相关信息的巨型数据索引库。
那么我们私人搭建大数据索引库有什么用呢?
- 查询自己的旧账户,找回忘记的密码。
- 判断自己账户是否泄漏,及时修改密码以增强个人信息安全强度。
- 实战数据分析,例如统计最为常用的弱口令,判断密码健壮性等(注:此数据分析非广义上的数据分析,我才不会告诉你这是我口胡的)
- 积累亿级数据维护管理经验(逃
?
准备工作
索引软件的选择:
工库本质还是对存储的数据进行查询,自然分为三个模块需要处理:数据,索引软件,查询应用。
先讲讲索引软件,也许有的读者会问,为什么需要索引软件呢?我用txt自带的文本搜索不是方便又快捷嘛?
?
(当然,你要直接上超算的话当我上面没说)
而索引软件就是用于解决这个问题的,数据索引软件又称全文搜索引擎。
只要配置得当,一般配置的机子在亿级数据量下都可达到毫秒级查询响应。并且原生支持多种数据源导入,减轻数据清洗整理的压力。且大部分全文引擎都是开源的,使用不需要支付额外费用。
好了,我们来具体聊聊具体使用哪种索引软件。
注:以下软件选择仅为笔者个人观点,读者可根据个人需求自由选择。个人见解难免受限于知识储备,若有更好的见解尽可赐教于留言区。
Elasticsearch
Elasticsearch是一个开源(Apache2许可证),是一个基于ApacheLucene库构建的RESTful搜索引擎。
主要功能列表包括:
Solr
ApacheSolr是一个基于名为Lucene的Java库构建的开源搜索平台
主要功能列表包括:
Coreseek/sphinx
Coreseek实际上的内核还是Sphinx。但其最大的不同是coreseek有一个中文分词利器mmseg。
较为知名的引擎有以上三种,笔者这里选择了第三种。
或许对这方面稍有了解的读者会认为前两种引擎功能更加丰富便捷,性能更高,企业级使用云云..但我们的目的是搭建私人使用的数据库,而sphinx相较于他者一个显著的优点就是使用简单,轻量化配置,同时支持了分布式搜索及高效索引查询。
Sphinx的操作学习成本低,便于上手,并且提供多种开发语言的api,私人使用足矣。
关于导入的数据:
读者搭建数据库时可自行寻找相关泄露数据或随机生成数据。这里不提供任何数据下载服务。
?
关于数据查询:
将会于之后的系列教程详细介绍,这里略过。
最后展现下查询系统的预期架构。(灵魂画手)
?
配置环境:
硬件:4G内存E52630 100G SSD
操作系统:Debian 8.2 x64
硬件配置的话自然是越强越好,最好使用固态硬盘,会大大加速查询时间。
?
索引引擎安装
环境的处理:
用的yum命令:
yuminstall make gcc g++ gcc-c++ libtool autoconf automake imakemysql-devel libxml2-devel expat-devel
用的apt-get命令:
apt-getinstall make gcc g++ automake libtool mysql-client libmysqlclient-devlibxml2-dev libexpat1-dev
注:如果提示某个包找不到的话,apt-getupdate更新源或换源安装
软件安装:
常见版本:4.1,3.2.14(建议4.1)
下载软件包coreseek-4.1-beta.tar.gz
http://files.opstool.com/man/coreseek-4.1-beta.tar.gz
解压:tarzxvf coreseek-4.1-beta.tar.gz
安装mmseg分词模块:
cdmmseg-3.2.14/ ./bootstrap
注:注意看提示,可能需要把生成的configure.in改为configure.ac ./configure–prefix=/usr/local/mmseg3 make makeinstall
安装全文引擎:
cd/usr/local/coreseek-4.1-beta/csft-4.1
执行shbuildconf.sh
注:如果 错如下
?
主要是
- butoption ‘subdir-objects’ is disabled
- archiverrequires ‘AM_PROG_AR’ in ‘configure.ac’
解决方案:
首先提前解决后面会出现的问题:
a) 修改sphinxexpr.cpp文件,将文件中的Tval = ExprEval ( this->m_pArg, tMatch ) 都修改为 Tval = this->ExprEval ( this->m_pArg, tMatch ),总共有三处
visrc/sphinxexpr.cpp
b) 修改buildconf.sh文件,在&&aclocal 下添加一行 &&automake –add-missing ,即变成
?
c)修改文件MakeFile,查找LIBS, LIBS= -lm -lexpat -L/usr/local/lib 修改为 LIBS= -lm -lexpat -liconv -L/usr/local/lib
vi./src/MakeFile/
或者
在你之前如果已经进行过./configure操作时,修改文件configure中,查找 #defineUSE_LIBICONV 1 修改为 defineUSE_LIBICONV 0
d)修改文件configure.ac,AM_INIT_AUTOMAKE([-Wall-Werror foreign])改为 AM_INIT_AUTOMAKE([-Wallforeign])
AC_PROG_RANLIB下添加一行 AM_PROG_AR
?
之后再次执行shbuildconf.sh即可生成configure
?
执行./configure–prefix=/usr/local/coreseek –without-unixodbc
–with-mmseg–with-mmseg-includes=
/usr/local/mmseg3/include/mmseg/–with-mmseg-libs=/usr/local/mmseg3/lib/ –with-mysql
?
执行make
?
执行makeinstall
?
至此,sphinx已经安装成功
?
结语
本系列教程的第一节讲解到此为止,主要讲解了全文引擎的安装及 工库相关的概念,由于是系列的第一节课,赘述了一些理论概念,从第二节开始将会介绍更多的干货,还请各位持续关注。最后,如果有什么不足之处还请留言指出,谢谢。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!