一、获取:

xunsearch下载地址: http://www.xunsearch.com/site/download。

linux命令行下载:wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2

解压:tar -xjf xunsearch-full-latest.tar.bz2

二、安装:

根据提示进行操作,输入 xunsearch 软件包的安装目录,这里最好把xunsearch单独放在一个目录下。

cd xunsearch-full/

sh setup.sh

三、启动

启动/重新启动 xunsearch 的后台服务$prefix 替换为你的xunsearch安装目录

cd $prefix;

bin/xs-ctl.sh restart

添加到开机启动脚本,在 Linux 系统中将脚本指令$prefix/bin/xs-ctl.sh restart写进 /etc/rc.local 即可

四、xunsearch项目配置文件详解

项目名称 project.name = AppName

默认字符集 project.default_charset = UTF-8

定义字段[field_name]

type 字段类型

string 字符型,适用多数情况,也是默认值

numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可

date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用

id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写

title 标题型,标题或名称字段,至多有一个该类型的字段

body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索

五、weight 混合区检索时的概率权重在混合检索时,可以对标题和内容等不同字段进行权重计算,如果你不想该字段参与计算权重可设为 0 。通常默认值为 1 ,但 title 型默认为 5 而 body 型则固定为 1 。

weight = 1

六、index 索引方式

none 不做索引,所有的搜索匹配均与本字段无关,这个字段只用于排序或搜索结果展示用到。

self 字段索引,可以在搜索时用 field:XXX 来检索本字段

mixed 混合区索引,不标明字段的默认搜索也可以检索本字段

both 相当于 self + mixed,两种情况均索引

七、搜索相关代码

require '$prefix/sdk/php/lib/XS.php';

$xs = new XS('demo'); // 建立 XS 对象,项目名称为:demo

$search = $xs->search; // 获取 搜索对象

//搜索语句

$query = '项目测试'; // 这里的搜索语句很简单,就一个短语

$search->setQuery($query); // 设置搜索语句

$search->addWeight('subject', 'xunsearch'); // 增加附加条件:提升标题中包含 'xunsearch' 的记录的权重

$search->setLimit(5, 10); // 设置返回结果最多为 5 条,并跳过前 10 条

$docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中

$count = $search->count(); // 获取搜索结果的匹配总数估算值

八、xunsearch原理说明

当你安装完xunsearch之后,会有两个(服务)软件启动

索引服务或者说索引服务器(是建立在xapian核心上的),然后它会监听一个端口,他负责维护索引文件或者说索引表(索引的增,删);

搜索服务或者说搜索服务器(scws分词器核心上),它也会监听一个端口,他负责根据客户提交过来的数据的 进行分词,到索引表中查询得到相关数据的id(这里的id是主键索引),然后再到数据库中查询,然后返回结果集。

知道他的原理之后,程序员怎么按照上面的发送命令呢,即xunsearch提供的php sdk,我们程序员只要根据sdk中api就可以了,所以开发就简单了。

官网架构截图

补冲说明:经过本人测试发现,xunsearch与sphinx原理上略有不同,xunsearch当然在创建索引时,其实他是创建了一个自己的数据库,

如果你用xunsearch去查寻数据时,他不会再到你的mysql数据库中去查寻了,而是直接到它本身的数据库中去查寻,然后返回数据,而sphinx

不是这样的,sphinx创建一些索引文件(索引表),然后通过sphinx去查寻数据时,首先他到索引文件查寻数据,然后返回的是当前要查寻数据的

id(这里id是主键),然后再通过id去到mysql数据中查寻数据,然后再返回给数据。

九、xunsearch与sphinx的比较

9.1、共同点:

两者都可以基于MySQL,都是基于C/C++开发的。Xunsearch是国内开源团队基于国外的Xapian,所有有些是直接基于Xapian和Sphinx的比较。

9.2、区别:

9.2.1、单一索引最大记录:Sphinx: 1亿条记录

建立索引的速度:

Sphinx: 100万条记录/3~4分钟,1000玩条记录/50分钟内

Xunsearch: 1万条距离/4.14分钟

9.2.2、 查询速度:

Sphinx: 1千万条记录下为0.x秒(毫秒级)

Xunsearch: 100万条记录为0.5秒

9.2.3、分布式搜索:

Sphinx: 支持

Xunsearch: 未发现相关文档

9.2.4、对中文支持:

Xunsearch > Sphinx,Xunsearch支持拼音搜索

9.2.5、使用简单化:

Xunsearch > Sphinx

xunsearch与mysql区别_全文索引xunsearch的详细讲解及sphinx的比较相关推荐

  1. xunsearch与mysql区别_利用 Xunsearch 搭建搜索引擎、内容搜索实战

    1,安装 GCC 依赖 任务时间:10min ~ 20min 部分用户在安装时,后面的步骤会出错,是因为安装依赖时没注意到GCC,GCC++,很多教程只给出了一种依赖的安装,结果导致后面出现错误.这里 ...

  2. kettle mysql 参数_kettle参数、变量详细讲解

    kettle参数.变量详细讲解 kettle 3.2 以前的版本里只有 variable 和 argument,kettle 3.2 中,又引入了 parameter 概念:variable 即env ...

  3. Wordpress 修改 mysql 插件_史上最详细的WordPress安装教程(三):安装php 5.6及fpm、pdo、mysql等插件...

    ​安装php 5.6 yum -y install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-releas ...

  4. mysql迅_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...

    热点新闻 本软件趋于稳定,版本发布速度放缘,久违了,这次加入支持通过 composer 管理 PHP-SDK,并加入 yii2 扩展支持!非常高兴能在今晚发布 xunsearch-1.4.9 正式稳定 ...

  5. mysql text index_MySQL 全文索引(fulltext index)

    1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...

  6. MySQL中的全文索引

    MySQL中的全文索引 全文索引(Fulltext index)主要用来查找文本中的关键字,而不是直接与索引中的值相比较.Fulltext索引跟其他索引大不相同,它更像是一个搜索引擎,而不是简单的w ...

  7. java中class.forname连接mysql数据库_数据库链接与 Class.forName()用法详解

    主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...

  8. 3w并发mysql架构_(DBA之路【一】)mysql 基本架构

    MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux.Windows.Mac和Solaris.各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上 ...

  9. mongodb 持久化 mysql_(转)mongodb与mysql区别

    mongodb与mysql区别 MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,m ...

最新文章

  1. java接口如何定义常量 c_java接口定义常量研究
  2. LDAPit's usage
  3. Python之web开发(error):python使用django框架搭建网站之文件配置
  4. Fleury (弗罗莱) 算法通俗解释
  5. 服务行为 之 并发与实例化
  6. android Q版本外部存储问题以及获取空间大小问题
  7. 前端学习(1654):前端系列实战课程之js运行代码
  8. 计划任务 at,cron
  9. iec61131 3 html5,IEC61131-3{ed3.0}标准资料.doc
  10. golang 获取当天0点时间_golang使用webAssembly的方式
  11. android studio中把c/c++文件编译成.so库(一)
  12. 实战中总结出来的CSS常见问题及解决办法
  13. 【转】jvm内存结构
  14. HCK哈士奇x可口可乐联名潮酷冰吧,你还没入手吗?
  15. mysql的安装配置
  16. errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.
  17. 自学鸿蒙应用开发(7)- Picker组件
  18. mysql 3日内_一门三父子
  19. 区块链读书笔记01-区块链基础
  20. 记一次与流氓的战争——卸载360安全卫士之后

热门文章

  1. cad编辑节点快捷键是什么_CAD中最常用的20个快捷键是什么?
  2. 十大高蛋白质食品 补充蛋白质的最佳选择
  3. 分享几个开源Java写的博客系统
  4. 搜索引擎各大站长平台汇总(盘点)
  5. 【NLP】11其它句向量生成方法——Tf-idf模型、腾讯AI实验室汉字词句嵌入语料库求平均生成句向量
  6. javascript 实现简单拖拽(鼠标事件 mousedown mousemove mouseup)
  7. OWASP——简介及认识
  8. OWASP Top 10:2021
  9. Pkg.go.dev 开源了
  10. linux nmi,NMI是什么