Xapian除了PHP Xapian是一个用C++编写的全文检索程序,他的作用类似于Java的lucene。 wget http://oligarchy.co.uk/xapian/1.2.6/xapian-core-1.2.6.tar.gz tar zxvf xapian-core-1.2.6.tar.gz cd xapian-core-1.2.6 . /configure –prefix=/usr/local/xapian make make install wget http://oligarchy.co.uk/xapian/1.2.2/xapian-bindings /configure XAPIAN_CONFIG=/usr/local/xapian/bin/xapian-config --with-php PHP_CONFIG=/usr/local/webserver
扩展(一)Xapian官方文档学习 关于 XS ,以及基础的搜索引擎相关知识的学习完成之后,今天,我们再来看一下 Xapian 官方文档中一些比较有意思的地方。 关于 Xapian 数据库各种文件格式的说明,以及几个 Xapian 工具的使用。不得不说的是,这一部分内容,可能还是全网唯一的(资料极少)。 文档拾遗 Xapian 的介绍就不多说了,本来我想单独搭建 Xapian 和 SCWS 的,也就是想手动搭起一套 Xapian + SCWS 的运行环境。但是,没成功! Xapian 支持并发读,但不能并发写。Xapian 在写操作时有锁,它的修改是原子性的。 使用的是 xapian-compact 这个工具。
/configure XAPIAN_CONFIG=/data/xapian-core-1.4.24/xapian-config --with-java --with-python3 make make ("搜索"); Xapian::Query term2("引擎"); Xapian::Query query = Xapian::Query(Xapian::Query::OP_OR, term1, ::Database db(index_data_path); Xapian::Enquire enquire(db); Xapian::QueryParser qp; Xapian::Query term1("搜索"); Xapian::Query term2("技能"); Xapian::Query query = Xapian::Query(Xapian::Query::OP_AND, 总结 xapian的介绍到这里告一段落,后续文章会深入xapian的内部细节。
XunSearch 和 Xapian XunSearch 中文名是 迅搜 ,国人大佬开发,提供完整的 PHP SDK 组件。 不是说好了是学习 XunSearch 嘛?Xapian 是什么鬼? 同理,Xapian 正是我们 XS 的底层框架,XS 是建立在其之上的,通过封装提供了现成的 PHP SDK 能够让我们非常方便地使用。 除了 Xapian 之外,XS 还一道封装好了 hightman 大佬开发的中文 SCWS 分词器。相当于一个 XS 就是 Xapina+SCWS+PHP SDK 的组合。 ,因为咱们不只讲 XS 的使用,还要简单地学习一下 SCWS 和 Xapian ,并且通过这些再顺道一起学习搜索引擎相关的一些基础知识。 XunSearch ElasticSearch Solr Sphinx 引擎 Xapian Lucene Lucene 不知道 引擎开发语言 C/C++ Java Java C/C++ 应用语言 PHP
从名字就可以看出,它是负责和服务端交互的,也就是 PHP 与 Xapian 的交互部分。要说搜索索引,最核心的应该是在索引和搜索的操作上,这两部分也是我们后面要重点关注的部分。 也就是说,和 Xapian 进行通信就是这个对象的主要工作。 咱们直接演示这个对象的一些属性打印出来的效果,先来看看它的构造函数,也就是实例化参数。 这个命令的发送其实就是 PHP SDK 与 Xapian 的交互方法。 而 Xapian 和 SCWS 部分的源码就完全不用想了,之后如果能学学它们的单独使用就不错啦,毕竟全是 C/C++ 写的,只能留给各位大神来研究了。 而 Xapian 这种,想要通过命令行直接测试引擎里面的数据看来是不太可能了,真的必须就得通过 PHP 或者其它语言的 SDK 来操作了。或者各位大佬自己写一套?
对于 string 类型字段的排序,XS 中,或者说 Xapian 是以字典序的,这是啥意思?就是将字符一个一个拆开,一个一个比对。 不过,不管是 ES 的 Lucene 还是 XS 的底层 Xapian ,其实都不是用得 TF-IDF ,而是它的升级版,BM25 算法。 在 Xapian 官网的 https://xapian.org/docs/bm25.html 这个页面上,有具体的 BM25 的说明和公式。我抄过来。 这几个参数在 Xapian 中的默认值是 k1 = 1、k2 = 0、k3 = 1、 b = 0.5 。 Xapian 中的 BM25 又是由 BM11 和 BM 15 组合而来的,在上面官方文档的介绍中都有说明。数学大佬们还是直接去官方文档好好研究一下吧,我只能到这里了。
一直想找一个快速全文搜索的工具,目前找到的有Sphinx,xapian,Lucene,solr, elasticsearch ,whoosh,hyper estraier等,原本一直不太喜欢用java系的 尝试了sphinx,xapian,hyper estraier,其中xapian资料太少,hyper estraier虽然比较简单,但资料也少。
测试),iozone(磁盘测试) 日志相关:rsyslog,Awstats※,flume,storm,ELK(Elasticsearch+Logstash+Kibana)※ 搜索软件:Sphinx※,Xapian mysql-proxy,amoeba(更多还是程序实现读写分离 无人值守:kickstart,cobbler※ 软件安装:rpm,yum※(设计rpm包定制及yum仓库构建) 搜索软件:Sphinx,Xapian
而是只自建搜索引擎的配置优化 使用了两个开源的软件:sphinx 和 redis 开源搜索引擎 1.Lucence/Nutch/Solr Java编写 2.Sphinx/Coreseek C++ 3.Xapian
全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian ,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包
全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack:全文检索的框架,支持whoosh、solr、Xapian 、Elasticsearc四种全文检索引擎,点击查看官方网站 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃
$ mu index -m ~/mail indexing messages under /home/dean/mail [/home/dean/.mu/xapian] - processing mail processing mail; processed: 24750; updated/new: 24750, cleaned-up: 0 cleaning up messages [/home/dean/.mu/xapian
haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看
该框架支持Elasticsearch,Whoosh, Xapian,Solr搜索引擎。 Elasticsearch:据说是java写的。 Xapian: apian蜜蜂,X apian,大概使用蜜蜂的嗅探能力,来说明其搜索范围之广。 whoosh:检索引擎。(单词原意:飞快的移动。
因此,除了基本的 XunSearch 的学习,我们还会顺便略讲一点点搜索引擎的相关知识,也会顺道地看一看组成 XunSearch 的核心组件 SCWS 和 Xapian 。 XunSearch 是需要使用客户端的,即使是底层的 Xapian ,在其官网文档上,也是直接使用 Python 客户端来进行测试的。 这个 Xapian 是个啥玩意,我们后面再细说,反正现在大家就是要知道,我们现在就必须使用 XunSearch 提供的 PHP 的 SDK 包来进行连接和测试了,这个就相当于是一个客户端。
C++检索引擎 Xapian Xapian 是一个用C++编写的全文检索程序,他的作用类似于Java的lucene。 虽然在Java世界lucene已经是标准的全文检索程序,可是C/C++世界并没有相应的工具,而 Xapian 则填补了这个缺憾。 Xapian 的api和检索原理和lucene在非常多方面都非常类似,可是也有一些地方存在不同,详细请看 Xapian 自己的文档:http://www. xapian .org/docs/ Xapian 除了提供原生的C++编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你能够直接从自己喜欢的脚本编程语言当中使用 Xapian 进行全文检索了。
aptitude : Depends: libsigc++-2.0-0c2a (>= 2.0.2) but it is not installable Recommends: apt-xapian-index
haystack 是 django 的开源搜索框架,该框架支持 Solr、Elasticsearch、Whoosh、Xapian 搜索引擎,不用更改代码,直接切换引擎。
因此,除了基本的 XunSearch 的学习,我们还会顺便略讲一点点搜索引擎的相关知识,也会顺道地看一看组成 XunSearch 的核心组件 SCWS 和 Xapian 。 XunSearch 是需要使用客户端的,即使是底层的 Xapian ,在其官网文档上,也是直接使用 Python 客户端来进行测试的。 这个 Xapian 是个啥玩意,我们后面再细说,反正现在大家就是要知道,我们现在就必须使用 XunSearch 提供的 PHP 的 SDK 包来进行连接和测试了,这个就相当于是一个客户端。
haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看