手把手教你打造私人大数据检索库(一)

http://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/Nw2VDyvCpPt_GG5YKTQuUQ

?

序言

咳咳,这里是青空酱。准备最近开一个天坑,讲讲个人如何从无到有搭建一个自用的大数据检索库。

这将会是一个层层相扣,依次衔接的系列教程,内容覆盖了:相关数据索引软件的选择与安装配置,多元化数据的清洗导入与维护,以及自定义查询API的定义与查询应用前后端的构建步骤….并且会将个人总结的一些trick与坑点会穿插于其中,尽力去打造一套能给读者有所裨益的教程。

教程规划为三节;

  1. 工库的介绍与索引引擎的选择与安装配置。
  2. 相关数据的清洗导入与维护
  3. 一步步教你查询应用前后端的开发

最后还请大家持续关注本教程(毕竟我也不是什么鸽子)

?

工库的传说

在谈 工库之前,我们先说说什么是 工(即 会工程学),有几个 会工程学的概念需要了解:1. 会工程学攻击都建立在使人决断产生认知偏差的基础上,熟练的 会工程师都是擅长进行信息收集的身体力行者。 2. 会工程学是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 3. 会工程学是一种黑客攻击方法,利用欺骗等手段骗取对方信任,获取机密情 。 4. 会工程学是一种利用人性脆弱点、贪婪等等的心理表现进行攻击,是防不胜防的。

相关的 工库学习操作可以来合天 安实验室操作实验—— 会工程学是一种利用人的弱点如人的好奇心、信任、贪便宜等弱点进行诸如欺骗、伤害等危害手段。了解 会工程学手段,可以大概率地帮助我们不受骗噢!

点击:


http://www.hetianlab.com/expc.do?ec=
ECIDee9320adea6e062017101116540900001”可预览学习!

?

工库,是 会工程学中所用到的数据库。

上面提到了, 会工程学的一个维度就是信息搜集,比如指定一个手机 ,就能获取到这个手机 背后的主人信息,包括姓名、邮箱、身份证、籍贯、 交账 等等信息,这些信息就是 工库。

一句话解释:

工库就是给一个账 就能查出 主相关信息的巨型数据索引库。

那么我们私人搭建大数据索引库有什么用呢?

  1. 查询自己的旧账户,找回忘记的密码。
  2. 判断自己账户是否泄漏,及时修改密码以增强个人信息安全强度。
  3. 实战数据分析,例如统计最为常用的弱口令,判断密码健壮性等(注:此数据分析非广义上的数据分析,我才不会告诉你这是我口胡的)
  4. 积累亿级数据维护管理经验(逃

?

准备工作

索引软件的选择:

工库本质还是对存储的数据进行查询,自然分为三个模块需要处理:数据,索引软件,查询应用。

先讲讲索引软件,也许有的读者会问,为什么需要索引软件呢?我用txt自带的文本搜索不是方便又快捷嘛?

?

(当然,你要直接上超算的话当我上面没说)

而索引软件就是用于解决这个问题的,数据索引软件又称全文搜索引擎。

只要配置得当,一般配置的机子在亿级数据量下都可达到毫秒级查询响应。并且原生支持多种数据源导入,减轻数据清洗整理的压力。且大部分全文引擎都是开源的,使用不需要支付额外费用。

好了,我们来具体聊聊具体使用哪种索引软件。

注:以下软件选择仅为笔者个人观点,读者可根据个人需求自由选择。个人见解难免受限于知识储备,若有更好的见解尽可赐教于留言区。

Elasticsearch

Elasticsearch是一个开源(Apache2许可证),是一个基于ApacheLucene库构建的RESTful搜索引擎。

主要功能列表包括:

  • 分布式搜索
  • 多租户
  • 分析搜索
  • 分组和聚合
  • Solr

    ApacheSolr是一个基于名为Lucene的Java库构建的开源搜索平台

    主要功能列表包括:

  • 全文搜索
  • 分面搜索
  • 实时索引
  • 动态群集
  • 数据库集成
  • NoSQL功能和丰富的文档处理(例如Word和PDF文件)
  • Coreseek/sphinx

  • 高速建立索引
  • 优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;
  • 分布式搜索;
  • 短语搜索
  • 可作为MySQL的存储引擎提供搜索服务;
  • 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

    注:如果 错如下

    ?

    主要是

    1. butoption ‘subdir-objects’ is disabled
    2. 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进行处理,非常感谢!

    上一篇 2019年7月15日
    下一篇 2019年7月15日

    相关推荐