全文索引xunsearch的详细讲解及sphinx的比较(笔记1)

转载 2017年08月15日 11:52:16
一、获取:
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 字段类型
  1. string 字符型,适用多数情况,也是默认值
  2. numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可
  3. date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用
  4. id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写
  5. title 标题型,标题或名称字段,至多有一个该类型的字段
  6. body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索
 
五、weight 混合区检索时的概率权重在混合检索时,可以对标题和内容等不同字段进行权重计算,如果你不想该字段参与计算权重可设为 0 。通常默认值为 1 ,但 title 型默认为 5 而 body 型则固定为 1 。
weight = 1
 
六、index 索引方式
  1. none 不做索引,所有的搜索匹配均与本字段无关,这个字段只用于排序或搜索结果展示用到。
  2. self 字段索引,可以在搜索时用 field:XXX 来检索本字段
  3. mixed 混合区索引,不标明字段的默认搜索也可以检索本字段 
  4. 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之后,会有两个(服务)软件启动
  1. 索引服务或者说索引服务器(是建立在xapian核心上的),然后它会监听一个端口,他负责维护索引文件或者说索引表(索引的增,删);
  2. 搜索服务或者说搜索服务器(scws分词器核心上),它也会监听一个端口,他负责根据客户提交过来的数据的 进行分词,到索引表中查询得到相关数据的id(这里的id是主键索引),然后再到数据库中查询,然后返回结果集。
  3. 知道他的原理之后,程序员怎么按照上面的发送命令呢,即xunsearch提供的php sdk,我们程序员只要根据sdk中api就可以了,所以开发就简单了。
  4. 官网架构截图
  5. 补冲说明:经过本人测试发现,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



+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch              |
+-------------------------------------------------+
| 说明和注意事项:                                |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下: |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart
|    强烈建议将此命令写入服务器开机脚本中         |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:     |
|    /usr/local/xunsearch/data
|    如需要转移到其它目录,请使用软链接。         |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上    |
|    开发您自己的搜索了。                         |
|    目前只支持 PHP 语言,参见下面文档:          |
|    /usr/local/xunsearch/sdk/php/README
+=================================================+

主流全文索引工具的比较( Lucene, Sphinx, solr, elastic search)

http://sg552.iteye.com/blog/1560834 lucenesolrsphinx比较elasticsearch  前几天的调研( Rails3下的 full...
  • yanghaijianyumi
  • yanghaijianyumi
  • 2014年03月20日 13:29
  • 1913

xunsearch同步索引技术

参考网站:http://www.jishubu.net/yunwei/linuxyunwei/331.html
  • wzm112
  • wzm112
  • 2014年09月02日 09:26
  • 1087

PHP之SPHINX的使用(全文搜索引擎)

还有个一种扩展类似sphinx,叫做lucence; ==========用法: ======使用 1.下载coreseek,是一款加了中文语言包的sphinx; 2....
  • u011146511
  • u011146511
  • 2017年12月03日 15:03
  • 228

Coreseek/sphinx全文检索的了解

Coreseek/sphinx全文检索的了解 概述:   全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法,全文检索是将存储于数据库中整本书、整篇文章中的任意内容信息查找出来的检索。它...
  • wuchengzeng
  • wuchengzeng
  • 2014年07月03日 09:45
  • 1937

Lucene Sphinx 全文索引 对比

全文检索功能很多系统中都有用到,但我有个疑问:到底是用数据库中提供的全文检索功能,还是选用如 Lucene 之类的东西来实现?我主要想知道,这两种方式有什么区别?各自适用于什么样的场合?对中文的支持都...
  • u010098331
  • u010098331
  • 2017年04月02日 11:52
  • 988

xunsearch(迅搜中文全文搜索引擎)的简单使用

Xunsearch (中文名:迅搜)是一套免费开源的专业中文全文检索解决方案,简单易用而且 功能强大、性能卓越能轻松处理海量数据的全文检索。它包含后端索引、搜索服务程序和前端 脚本语言编写的开发工具包...
  • lingchen__
  • lingchen__
  • 2017年09月14日 17:08
  • 351

关于sphinx – 我有话要说

原创文章,转载请注明: 转载自下雨天 本文链接地址: 关于sphinx – 我有话要说 让子弹飞里面是唱着歌吃着火锅,我这是听着歌写着博客,细细想来,生活本该如此… 前段时间被工作搞...
  • ioniconline
  • ioniconline
  • 2015年12月25日 10:37
  • 2104

全文检索之sphinx源码分析--索引创建流程

sphinx是c++语言编写的一个开源全文检索项目,索引文件创建速度和检索速度都是不错的。由于公司的项目需要我对其源码进行了解读,并在其上进行了一定程度的改写以适应项目检索提速的需求。这篇文章就是我对...
  • pzlpy
  • pzlpy
  • 2017年08月23日 21:40
  • 164

sphinx PHP全文检索使用教程

使用打开控制台,必需打开控制台PHP才能连接到sphinx(确保你已经建立好索引源): d:\coreseek\bin\searchd -c d:\coreseek\bin\sphinx.conf...
  • q601115211
  • q601115211
  • 2014年05月04日 19:07
  • 1669

Frank-wolfe算法多OD对matlab实现

Frank-wolfe算法多OD对matlab实现Frank-wolfe算法多OD对matlab实现Frank-wolfe算法原理 Frank-wolfe算法流程 算例 将道路网络抽象为图 给定OD对...
  • m0_37407587
  • m0_37407587
  • 2017年08月25日 14:59
  • 245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全文索引xunsearch的详细讲解及sphinx的比较(笔记1)
举报原因:
原因补充:

(最多只允许输入30个字)