标签:xapian

0

203

ubuntu 环境下编译安装 xapiand

Xapiand 是基于开源检索引擎 Xapian 而二次封装开发的支持 RESTfulApi 服务。

在公司的前期项目中,因为需要对一些建筑/场所的坐标进行 经纬度距离排序 ,因此用到 Xapiand 服务, 但因为只是基于 docker 方式简单部署应用,并未对这个服务自身作深入研究,因此在后续 使用过程中,有同事反馈存在 “索引库容易丢失”、“内存居高不下” 等问题。

抱着学习研究的心态,遂尝试拉取源码研究一番,希望捣腾中或许能洞察到同事反馈的那些问题原因。

Xapiand 介绍

XapiandRESTful 搜索引擎, Xapiand 是一种现代的高可用分布式 RESTful 搜索和存储引擎,专为云计算而设计,并考虑了数据局部性。

它需要 JSON (或 MessagePack )文档以及 inde Xapiand

官方站点位于: https://kronuz.io/Xapiand

代码仓库地址:https://github.com/Kronuz/Xapiand

编译安装

拉取代码、编译:

git clone https://github.com/Kronuz/Xapiand.git
cd Xapiand
mkdir build
cmake CNinja ..
ninja

注意,上面编译用了 ninja 编译加速工具,因此需要提前安装类库:

sudo apt install ninja-build

编译过程中可能会存在各种报错,修复即可。

例如如下情况

报错1:

……

乐果   发表于   2023 年 12 月 08 日 标签:xapianc++ 继续阅读

0

7156

Xapian构建索引说明

Xapian与开源

Xapian的官方网站是http://www.xapian.org,这是一个非常优秀的开源搜索引擎项目,搜索引擎其实只是一个通俗的说法,正式的说法其实是IR(Information Retrieval)系统。Xapian的License是GPL,这意味着允许使用者自由地修改其源码并发布之。Xapian的中文资料非常少,可以说现在互联网上连一篇完整详细的Xapian中文介绍文档,更别说中文API文档了。其实,Xapian的英文资料也不多,除了官方网站上的Docs和Wiki外,还有一些网站上的邮件列表,在这方面跟Lucene没得比。当然,Lucene现在已经发展到2.x版本了,而Xapian的最新版本才1.012,国外开源项目一般对版本号控制得比较严格,一个项目一般到了1.x才算稳定和成熟的。

Xapian可以运行在那些平台?

Xapian由C++编写,但可以绑定到Perl, Python, PHP, Java, Tcl, C# 和Ruby甚至更多的语言,Xapian可以说是STL编程的典范,在这里您可以找到熟悉的引用计数型智能指针、容器和迭代器,甚至连命名也跟STL相似,相信一定能引起喜好C++和STL的你的共鸣(实际上,很少C++程序员完全不使用STL)。由于Xapian使用的是STL和C运行时库,因此具有高度可移值性,官方说法是可以运行在Linux、 Mac OS X、 FreeBSD、 NetBSD、 OpenBSD、Solaris,、HP-UX,、Tru64和IRIX,,甚至其它的Unix平台,在Microsoft Windows上也跑得很好。当然,并不能像Java那样“一次编译,到处可以运行”,当移植到其它平台时,一般来说是需要重新编译的。至于如何在Windows32位系统下编译Xapian,请查阅我以前写的文章《nmake在windows平台下编译xapian》。

Xapian的特性

……

乐果   发表于   2017 年 05 月 11 日 标签:xapian 继续阅读

0

3090

xapian主从部署

一、实际需求

在一个实际的大型部署中,检索的客户端往往以remote方式对索引库进行检索,而非files进行检索。 这是因为大型应用中,因负载较大,单台已经不能支撑起整个检索的任务。

remote是以tcp协议走socket接口,这样就可以将检索任务独立出来进行部署。 实际上,仅仅独立部署还是不够的,当负载进一步加大,就需要分布式部署,最简单的方式就是设置“一主多从”—即主从部署。

其中有一台“主服务”负责索引库的写入(更新),其他的“从服务”定期从“主服务”中批量更新并负责读取(检索)。

二、实际部署步骤

现在假设有两台服务器

a 192.168.1.50

b 192.168.1.60

其中,我们计划将a作为主服务器使用,b作为从服务器。部署步骤如下:

1、主服务器 ip 192.168.1.50

启动remote服务,假设检索库名称就叫xapian,把它创建在了/data目录下:

sudo ./xapian-tcpsrv -i 0.0.0.0 -p 8008 -w /data/xapian
Starting writable server on port 8008
Listening...

设置replicate服务:

sudo ./xapian-replicate-server -p 8009 -I 0.0.0.0 /data/

2、从服务器 ip 192.168.1.60

启动定时同步复制服务:

sudo ./xapian-replicate -h 192.168.1.50 -p 8009 -i 1 -v -m xapian /data/xapian

启动remote服务:

sudo ./xapian-tcpsrv -i 0.0.0.0 -p 8008 -w /data/xapian
Starting writable server on port 8008
Listening...

OK,至此,主从部署配置完成,非常简单。

声明:本站所有博文均为本人原创,引用请保留链接出处!

乐果   发表于   2014 年 12 月 02 日 标签:xapian 继续阅读

0

3345

xapian安装(PHP版)

1、scws安装

sudo wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
sudo tar -jxvf scws-1.2.2.tar.bz2
cd scws-1.2.2/
./configure --prefix=/usr/local/scws
sudo make && make install
sudo mkdir /usr/include/scws
ln -sf /usr/local/scws/include/scws /usr/include
sudo ln -s /usr/local/scws/lib/libscws.so.1.1.0 /usr/lib/libscws.so
sudo ln -s /usr/local/scws/lib/libscws.so.1.1.0 /usr/lib/libscws.so.1

安装scws扩展 cd phpext phpize ./configure –with-php-config=PHP_HOME/bin/php-config make make install

下载分词库

http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
sudo tar -jxvf scws-dict-chs-utf8.tar.bz2
cd scws-dict-chs-utf8
sudo mv dict.utf8.xdb /usr/local/scws/

2、安装xapian核心服务

sudo wget http://oligarchy.co.uk/xapian/1.2.17/xapian-core-1.2.17.tar.xz
sudo xz -d xapian-core-1.2.17.tar.xz
sudo tar xvf xapian-core-1.2.17.tar
cd xapian-core-1.2.17
sudo ./configure –prefix=/usr/local/xapian  

如果 报错:

configure: error: Neither uuid/uuid.h nor uuid.h found - required for brass, chert and flint (you may need to install the uuid-dev, libuuid-devel or e2fsprogs-devel package)

ubuntu环境下安装依赖库即可:

sudo apt-get install uuid-dev 

报错:

You need a working C++ compiler to compile Xapian
....
xapian ./configure CXX=/opt/bin/c++

ubuntu环境下安装依赖库即可:

sudo apt-get install g++

3、安装xapian客户端(php扩展)

sudo wget http://oligarchy.co.uk/xapian/1.2.17/xapian-bindings-1.2.17.tar.xz
sudo xz -d xapian-bindings-1.2.17.tar.xz
sudo tar xvf xapian-bindings-1.2.17.tar
cd xapian-bindings-1.2.17
sudo ./configure XAPIAN_CONFIG=/usr/local/xapian/bin/xapian-config --with-php PHP_CONFIG=/opt/service/php/bin/php-config

乐果   发表于   2014 年 11 月 29 日 标签:xapianPHPubuntu 继续阅读

热评文章