资讯专栏INFORMATION COLUMN

简单几步搭建一个支持自定义数据的搜索引擎

Tecode / 2708人阅读

摘要:引言相信很多朋友们也想拥有一个属于自己的,可自定义数据的搜索引擎。旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。

引言

相信很多朋友们也想拥有一个属于自己的,可自定义数据的搜索引擎。

可是网上的教程大多集中于利用SearX实现聚合各个公共搜索引擎的数据源,而不是用自己爬取的数据作为数据源。

而提到了如何利用自有数据建立搜索引擎的教程大多是基于ElasticSerach,对于我们轻量级使用的用户而言,这个学习成本太高,仅仅是要实现简单的搜索以及联想关键词功能就需要数以月计的时间进行学习

若要使用阿里云等提供开发好的的Elastic搜索服务,又会发现每个月包月的价格对于我们这些访问量不大的小站而言,十分不划算。仅仅最低档的套餐就要104元,有这钱升级一下服务器他不香吗?

所以我们来尝试自建一个搜索引擎吧!!

需要用到的东西

Linux系统的VPS*1 ps:如果你不知道这个玩意儿是啥的话,推荐看看之前的推文:

XunSearch开源中文全文搜索引擎项目

MySQL数据库(作为数据源)

一丢丢Linux运维命令的基础

XunSearch介绍

Xunsearch 是一个高性能、全功能的全文检索解决方案

Xunsearch 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。 Xunsearch 中文译名为“迅搜”,代码中的经常被缩写为 XS,既是英文名称的缩略也是中文声母缩写。 这儿的“迅”是快速的意思,至少包含了两层涵义:其一代表了搜索结果的响应能力,其二则为二次开发难度、速度。

可以看出,XunSearch主要分为 利用C++开发的后端用于建立索引以及搜寻索引,还有一个XunSearch PHP-SDK作为前端。

部署XunSearch

现在正式开始我们的教程吧

安装过程

先检查是否安装了后续部署需要的组件,对于后端的安装而言,至少得有GCC用于编译,以及wget用于下载 一般而言这两项都是有的_(Md,还真有些精简过的系统没有)_ 不放心的朋友们可以试试这两个命令,来检查是否安装了这些需要的组件

gcc -v
rpm -qa|grep "wget"

检查过后就可以用Linux下常用的软件安装三句话搞定了

下载并解压

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -xjf xunsearch-full-latest.tar.bz2

进入目录并执行安装命令

cd xunsearch-full-1.4.14/      这一步要看你自己安装下来的版本是多少
sh setup.sh

ps:这一步由于服务器性能限制,可能会执行很久,千万不要中途断开连接哦

启动后端

cd  安装目录    这里填入你上一步记下的安装目录
bin/xs-ctl.sh restart

配置过程

(a)部署php-sdk

在安装了之后,php-sdk会被释放到安装目录下的/sdk/php/目录下

这个php-sdk呢,就相当于一个网站的源码,要部署的时候直接复制到网站根目录即可,就和一般的网站搭建过程一样,这个不是技术上的难点

(b)配置文件的编写

配置文件的编写是XunSearch项目的核心部分,具体每一项的含义在技术文档有 我这里以一个简单够用的例子来解析

project.name = OneGoSearch  //项目名称

[id]   //字段名称
type = id    ///字段类型,此处为主键,每个项目必须要一个主键

[name1]
index = mixed     

[link1]
index = mixed

,

这里说明几点:这些字段需要与你存入数据库中的数据的字段相同,比如说如下图

我要能够让用户按照名字搜索到这些资源站的文件的链接,就需要索引name1,link1,还需要一个id作为唯一标识的主键。

然后由于name1与link1里面的内容按照各个加盟资源站不同的命名习惯,导致名字里中英文,数字以及特殊符号的表示十分复杂,所以选择mixed类型作为字段类型

上面这样手动编写是为了能够更清楚的看懂配置文件编写的原则

实际上,官方提供了简明易用的配置文件编写工具Ini文件设计辅助工具

这个只需要傻瓜化的选择类型,填入字段名即可生成配置文件

生成好的文件,需要放入PHP-sdk中的/app文件夹,并且命名为与项目名称相同 如下图所示

(c)建立索引并测试搜索

最后一步就是建立索引啦 切换到php-sdk目录下,我们以SQL数据库作为数据源导入索引

 util/Indexer.php --rebuild --source=mysql://user:passwd@localhost/database --sql="SELECT * FROM table" --project=projectname

user:数据库的用户名 passwd:数据库密码 database:数据库名称 table:存储了需要索引的信息的数据表 projectname:上一步设置的项目名称

我们再来测试一下搜索 能看到结果就说明测试部署完成了

之后我们就可以到之前安放了php-sdk的网站进行搜索了 (我这个是由大佬帮忙美化过的前端,实际上XunSearch自带的前端有点丑)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125887.html

相关文章

  • 智能大数据平台 USDP

    摘要:用户可以根据自身业务特点和需求,从中选择相应的组件来搭建自己的大数据处理平台。专业的技术支持大数据团队积淀了多年公有云大数据运维和业务调优经验,通过持续更新的知识库,可以为用户提供专家级的技术支持,解决大数据平台使用和维护的后顾之忧。智能大数据平台 USDPUCloud Smart Data Platform(简称 USDP),是 UCloud 推出的智能化、轻量级的大数据基础服务平台,通过...

    Tecode 评论0 收藏0
  • 代码 - 收藏集 - 掘金

    摘要:行代码的人脸识别实践产品掘金前言很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上页的教程立马就放弃了。掘金最新最全的开源项目合集掘金是由整理并维护的安卓相关开源项目库集合。 安卓第三方登录之微信登录(图文详解) - Android - 掘金一、创建应用并成为开发者 1、创建应用 1)到微信开放平台管理中心,点击创建移动应用 ... 三步实现...

    neuSnail 评论0 收藏0
  • cdh替代-这款cdh替代方案你要知道

      痛点:  如今数字化转型,已成为企业界的共识。 从信息时代走向数字时代,大家都希望在生产要素、经济形态发生变革的节点抓住机遇不被淘汰,而绝大多数中小企业又没有财力搞得太折腾太复杂。因此大家不要期待一口气吃成胖子,而要抓住数字化时代的本质是让企业线上的数据流动起来,解决数据的运力和流通问题,也就是数据消费。其实绝大多数企业的核心诉求也是打破数据孤岛,提升数据共享消费的效率,进而实现企业的降本...

    白马啸西风 评论0 收藏0
  • 创建一个直播答题平台需要几步

    摘要:只需三步构建快准稳省的直播互动答题平台视频直播及网络加速部署你只需准备一台摄像机一台电脑,然后对接青云直播推流服务器,配置部署终端,即刻开启高清直播之旅,畅享超低延迟支持及优化推流协议,提供高速及分发网络,实现低至毫秒的极致延迟。 今天,你答题了吗?今天,你通关了吗? 今天,你答题赚了多少钱? 直播答题市场不断升温,越来越多的玩家开始进入,1 月 18 日,新世相正式上线第一款以小程...

    Invoker 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<