这回的新系列,我们将学习到的是一个搜索引擎 迅搜 XunSearch 的使用。这个搜索引擎在 PHP 圈可能还是有一点名气的,而且也是一直在更新的,虽说现在 ElasticSearch 已经是实际上的搜索引擎霸主了,而且还有 Solr 在后的不断追赶,但要说最简单、最实在,而且最容易让我们这些 PHPer 上手的,绝对还是 XunSearch 。
Xunsearch (迅搜)是一套免费开源的专业中文全文检索解决方案,简单易用而且 功能强大、性能卓越能轻松处理海量数据的全文检索。它包含后端索引、搜索服务程序和前端 脚本语言编写的开发工具包(称之为 SDK) 。下面我们开始安装。进入linux服务器目录/www/wwwroot/xunsearch,输入
分词搜索始终不是那么好解决,但是基本也有现成的解决方案。在我博客之前的文章我也介绍过Sphinx分词搜索:CentOS7下安装Sphinx 中文分词【PHP+MySQL】
前期准备 入坑了一天,折腾的无语,个人观点:【文档太差,适合学习思路,小心入坑】 背景 最近在整理全文检索解决方案 注意到 PHP 环境中对 xunsearch 的评价很高,在此记录一番 【Xunsearch 是一个高性能、全功能的全文检索解决方案】 场景描述 此处作为对 xunsearch 的初次使用, 以一个简单的商品 SKU 信息搜索场景进行描述 我已有一张 tp5_xsku表,用来存储商品 SKU 信息 主键为 "sku_id",需要进行匹配的字段为:"spec_name"
在一些小型项目上需要应用全文搜索引擎时,我比较喜欢使用迅搜,因为部署方便,调用简单,今天给客户部署系统安装迅搜时,竟然有报错(极少遇到报错的情况),花了一些时间查资料,终于解决了,分享一下经验
网站搜盘子运行在腾讯云的服务器上,前几天忽然打不开了,我就登陆服务器去瞅一眼咋回事,看了下发现硬盘满了,现在就来记录一下怎么解决
这个问题出现在使用 Xunsearch 的时候,Xunsearch 是一个高性能、全功能的全文检索解决方案,旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎
Xunsearch 是开源免费、高性能、多功能,简单易用的专业全文检索技术方案,是目前非常知名的开源搜索引擎。
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
宝塔面板安装的用户,请把网站根目录user.ini文件清空,否则无法跨站点引入全文检索文件导致搜索失败,全站挂掉
经过上篇文章的学习,相信大家对分词的概念已经有了更深入的了解了吧。我们也知道了,SCWS 是 XS 中的一个重要组成部分,但它也是可以单独拿出来使用的。而对于分词器来说,不管是 SCWS 还是现在流行的 IK、Jieba ,其实概念方面都是差不多的。比如说它们都需要字典来做为分词的依据,也会有停用词库这一类的附加字典。今天,我们主要来学习的就是 SCWS 字典相关的一些配置。此外,还有自定义分词器的实现。
关于 XS ,以及基础的搜索引擎相关知识的学习完成之后,今天,我们再来看一下 Xapian 官方文档中一些比较有意思的地方。关于 Xapian 数据库各种文件格式的说明,以及几个 Xapian 工具的使用。不得不说的是,这一部分内容,可能还是全网唯一的(资料极少)。
对于一个搜索引擎来说,索引配置是非常重要,并且也是非常核心的内容。在 XS 中,我们的索引配置是通过一个配置文件来实现的。在前两篇文章的测试中,我们使用了一个叫做 demo 的索引配置。当时,我们直接就是写了一个 demo 这个名称,那么这个配置文件具体在哪里呢?
学习完索引操作最核心的增、删、改操作之后,我们再来学习它的其它一些功能。其中,比较有意思的是一个同义词操作的功能,我们先来看看这个功能的操作。
1. 取得 scws-1.2.3 的代码 wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
前面我们已经学习了基本的搜索功能以及非常重要的相关度排序的算法。对于大家日常基本的使用来说,其实有之前的内容就已经非常足够了,但是,一个好的工具,总会有一些意外惊喜的,比如说我们今天要学习的内容。
经过上篇文章的学习,我们已经了解到了 XS 中的默认索引配置是在哪里,也了解到了配置文件如何加载以及服务端的一些简单配置。今天,我们要学习的重点就是剩下的内容,也是非常重要的内容,那就是索引字段的配置定义以及字段设计。
啥?还要单独讲一下啥是搜索引擎?不就是百度、Google嘛,这玩意天天用,还轮的到你来说?
不管任何搜索引擎,最核心的部分,往往都只有两个,一是建立索引,二是搜索数据。不过对于中文这种复杂的语言体系,分词也是另一块核心内容。从今天开始,我们就先来学习第一块的内容,就是对于索引的操作。
好了,咱们的学习要更进一步了,现在进入到的就是整个 XS 学习的核心部分,PHP SDK 相关操作的学习。其实说白了,对于 PHP 代码中使用 XS 的功能,无非就是我们之前已经演示的那些内容。最核心的就是三个对象:XS、XSIndex 和 XSSearch 对象。但是整个 XS 中又不完全是这三个对象的内容,还有一些其它的对象也有着非常重要的作用。因此,在这一篇和下一篇文章中,我们将以 XS 对象为切入点,同时学习一下一些其它方面的基础对象。
今天我们来学习真正的,最核心的索引管理相关的操作。但其实今天的内容还更简单一些,为啥呢?因为索引管理中,最核心的就是对于数据的增、删、改呀。其实要往大了说,查询也是针对索引的操作,只不过相对来说,搜索引擎引用往往是读多写少,而且相比数据库来说,它的写还要少一些。
在学习完最基础的 XS 对象和一些字段对象之后,我们今天将学习到的是 XS 的 PHP SDK 中非常核心的一个对象,那就是 XSServer 对象。从名字就可以看出,它是负责和服务端交互的,也就是 PHP 与 Xapian 的交互部分。要说搜索索引,最核心的应该是在索引和搜索的操作上,这两部分也是我们后面要重点关注的部分。但是,如果没有 XSServer 的支持,则一切都无法实现。幸好,这一部分的内容不多,也并不复杂,咱们就好好来看一下。
2.if判断格式如,写成一行 ,if test 条件;then 动作;else 动作;fi
首先下载 sphinx 最新版 2.2.11-release http://sphinxsearch.com/downloads/release/
正式进入到分词部分的学习了,这也是我们搜索引擎学习的最后一个部分了。在这里,我们还是以 XS 默认的 SCWS 分词器为基础进行学习,但是,就像之前的其它内容一样,原理和概念部分的内容很多都是相通的。即使你将来要用 Jieba 分词或者 IK 分词,它们所有的原理和 SCWS 都是大差不差的。
写在前面:http://www.xunsearch.com/scws/index.php 私人定制:scws 上面那个压缩包是在thinkphp中使用的!将swcs文件夹放在Vendor目录下;备注:我用的require_once引入的!因为verdor怎么都不能引入!!!! 那Words的类可以放在自己的扩展包,用的时候引入即可!比如我的放在COM目录,那么用的时候导入 使用例子: $str = ‘我是Joyous,我喜欢PHP,喜欢计算机’; $words = Words::segment($str);
学习完索引管理相关的内容之后,我们就进入到了搜索技巧相关的学习了。其实对应在 XS 中,就是 SDK 中的 XSSearch 对象的相关学习和使用。同样的,在这一部分,我们也会普及很多搜索相关的知识。
学习了这么久,也该有个结束了,在最后一篇中,我们先来看一下 Nginx 做四层代理并实现负载均衡的模块。这个和 HTTP 模块中的七层代理没啥差别,就简单演示一下。最后,再稍稍总结一下,主要就是讲讲我们还有哪些东西没讲到。毕竟整个 Nginx 体系就是一个应用服务器体系的学习,牵涉到的东西还有很多。那么出于什么原因咱们不再继续了呢?别急,下面会说出原因。
最近正在做appsite框架传统网站架构的拓展、其中不免有SEO的部分。 在网上做了一点功课,meta中的 description比较关键,keywords据说已经不再受搜索引擎的关照了,不过这种事情现在不能盲目相信,既然做一个网站那么还是应该要照顾好关键词。但是没必要付出过高的人力成本,所以我这里想到的还是使用分词扩展来自动生成关键词。 这样做的好处是,无论搜索引擎是否在意关键词,我们有和内容相关度很高的关键词,这不会对我们带来损失。 基于程序算法生成的关键词,不需要我们花费人力成本,包括可以在后台控制是否开启该功能。
如果他输入北京王老板 就必须地址和姓名都能匹配上 如果只输入地址就只like地址就可以
酷瓜云课堂,依托腾讯云基础服务架构,GPL-2.0 开源协议,不加密不阉割,100% 全功能开源在线教育解决方案。
近来在一个电商项目中需要对商品检索实现中文分词和全文搜索功能,,于是使用了国内做得比较好并且是开源的迅搜全文搜索引擎,对PHP支持良好并且简单易用好上手,安装和调用方法等就不详细介绍了,需要了解的朋友可以自行百度,这里主要是由于我们在这个项目中使用了负载均衡,但迅搜官方的文档里对这一块的配置说明不够详细,导致走我了一些弯路,所以写下来一个是分享给有需要的后来者,二是自己做个笔记吧。
PHP是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
标题起的太大了,都是骗人的。最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台。用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址。就是这么一个简单的功能,类似很多的网盘搜索类网站,我这个采集和搜索程序都是PHP实现的,全文和分词搜索部分使用到了开源软件xunsearch,现在就来介绍一下实现过程。
酷瓜云课堂,依托腾讯云基础服务架构,采用C扩展PHP框架Phalcon开发,致力开源网课系统,开源网校系统,开源在线教育系统。
又是收尾阶段了,其实在搜索,也就是 XSSearch 这个对象中,剩下的属性方法已经不多了。很多方法和属性在之前的学习中我们都已经使用过或者接触过了,剩下的都是一些锦上添花的功能,但往往这类的功能,却又有着各种不同的惊喜。好吧,到底是惊喜还是惊吓,咱们看完再说吧。
前情提要:最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台,名字是网盘小说。用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址。就是这么一个简单的功能,类似很多的网盘搜索类网站,我这个采集和搜索程序都是PHP实现的,全文和分词搜索部分使用到了开源软件xunsearch。
【磐创AI导读】:本文为中文分词工具整理分享。想要了解更多技术咨询,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。
由于业务需要,需要做类似淘宝商城商品检索的功能,对于数据量很大的情况,MySQL 查询的效率损耗很大,需要使用专门的索引引擎进行搜索查询,实现功能,对于和 PHP 和 Mysql 的结合的索引引擎中, xunsearch 和 sphinx 是较为著名的,但由于 xunsearch 服务器端不支持 windows,所以暂且先考虑 sphinx 的使用。sphinx 目前已支持简体中文、繁体中文和英文的检索,不需要额外安装插件支持。
1.Linux 基础入门 https://cloud.tencent.com/developer/labs/lab/10000
上回我们已经学习了一些简单的搜索功能,比如设置搜索语句、分页方法、数量查询以及高亮和折叠的查询效果。而今天,我们将更加深入地学习其它搜索相关的内容。最核心的,就是布尔查询,也就是类似于我们在数据库中的 AND 和 OR 之类的语法。不过在这之前,就像是 Explain 可以分析数据库的查询语句一样。XS 也为我们提供了一个可以查看分词结果以及查询条件的方法,我们得先来学会它的使用。
不管怎么说,最近以来,编程能力也是有不少提高的,虽然很久没写php了,但是编程这东西很多东西真是互通的..
不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引。
1.html2ps and html2pdf 下载地址: http://www.tufat.com/script19.htm
在逐渐步入DT(DataTechnology)时代的今天,自然语义分析技术越发不可或缺。对于我们每天打交道的中文来说,并没有类似英文空格的边界标志。而理解句子所包含的词语,则是理解汉语语句的第一步。汉语自动分词的任务,通俗地说,就是要由机器在文本中的词与词之间自动加上空格。
搜索引擎系列的最后一篇了。既然是最后一篇,那么我们也轻松一点,直接来看一套非常有意思的纯 PHP 实现的搜索引擎及分词方案吧。这一套方案由两个组件组成,一个叫 TNTSearch ,另一个则是大名鼎鼎的结巴分词的 PHP 版本。它们都是纯 PHP 实现的,非常轻量级的搜索引擎和分词工具,最主要的是,如果各位大佬有兴趣,可以深入学习它们的源码。之前就一直在强调,所有的原理都是相通的,通过对这两个组件的学习,其实就能清楚 Xapian 和 SCWS 也就是 XS 整个系统是怎么运行的。甚至也可以说,就能了解到 ES 和 IK 是大致是怎么运行的了。
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论;
领取专属 10元无门槛券
手把手带您无忧上云