Xunsearch入门
Xunsearch入门
简介:
	开源免费、高性能、多功能、简单易用的专业全文检索技术方案。
1、Xunsearch安装:
	(1)官网(http://xunsearch.com)下载
		wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2		  
	(2)解压:
		tar -jxvf xunsearch-full-latest.tar.bz2
	(3)进入目录(注意:这里的目录名字会根据最新的版本而不同)
		cd xunsearch-full-1.4.13
	(4)安装(无需配置编译)
		sh setup.sh
		说明:
		1、安装过程会询问,需要指定安装目录(/usr/local/xunsearch)
		2、首次安装可能需要几分钟,中间不出问题表示安装成功
	(5)启动测试:
		cd /usr/local/xunsearch/bin
		./xs-ctl.sh start
		说明:也可以将/usr/local/xunsearch/bin目录添加到环境变量中。
	(6)添加开机启动
		在/etc/rc.local文件最后添加一句话:
		/usr/local/xunsearch/bin/xs-ctl.sh start
	说明:会启动两个服务
		1、索引服务(8383):负责索引的添加、删除和修改。
		2、搜索服务(8384):负责提供搜索服务,即查询。
2、体验demo项目
	见手册。
3、项目配置文件
	基本说明:
		(1)项目配置是一个项目的核心灵魂,非常重要,通常保存为.ini文件,
			通常存储在/usr/local/xunsearch/sdk/php/app/
		(2)以分号开头的行表示注释,空行直接被忽略不起任何作用
		(3)中括号包围的每个分区均为字段配置,字段个数根据项目的实际需求设定
		(4)每个项目必须有并且只能有一个类型为ID的主键字段,ID字段值的字母不区分大小写
	常规配置:
		名称:project.name = xxx
		字符集:project.default_charset = UTF-8 (默认)
		索引服务端口:server.index = 8383      (默认)
		搜索服务端口:server.search = 8384	(默认)
	项目字段:
		字段名:	[字段名]
		字段类型:	type = xxx
			字符类型:string,适用多数情况,也是默认值
			数值型:numeric,包含整型和浮点型,仅当字段需要用于排序或区间检索时才设为该类型,
				否则使用string类型即可。
			日期型:date,形式为YYYYmmdd 这样固定的8字节,如果没有区间检索或排序不建议使用。
			主键型:id,确保每条数据具备唯一值,是索引更新和删除的凭据,
				每个搜索项目必须有且仅有一个id字段,该字段的值不区分大小写。
			标题型:title,标题或名称字段,至多有一个该类型的字段。
			内容型:body,主要内容字段,即本搜索项目中内容最长的字段,
				至多只有一个该类型字段,本字段不支持字段检索。
PHP-SDK
	PHP-SDK的代码默认包含在服务端安装目录中,即$prefix/sdk/php。
	对象:
		XS:		搜索项目总对象,所有相关操作均基于此对象及子方法。
		XSDocument:	搜索结果或索引文档,包括一组字段及值,相当于SQL表中的一条记录。
		XSIndex:	索引管理,通过XS对象的index属性取得。
		XSSearch:	搜索功能,通过XS对象的search属性取得。
		XSException:	异常类型,必须捕捉此异常以判断操作是否正确。
基本使用:
	include '/usr/local/xunsearch/sdk/php/lib/XS.php';
	try{
		//创建搜索对象
		$xs = new XS('demo');//demo为项目名称,配置文件是:$sdk/app/demo.ini。
		//获取索引管理对象
		$index = $xs->index;
		//获取搜索功能对象
		$search = $xs->search;
		//创建索引文档
		$data = [
			'pid' => 123,
			'subject' => '测试文档标题',
			'message' => '测试文档内容',
			'chrono' => time()
		];
		$doc = new XSDocument($data);
		//添加索引
		$index->add($doc);
		//更新索引
		$index->update($doc);
		//同步索引
		$index->flushIndex();
		//清空索引
		$index->clean();
		//搜索
		$res = $search->search('测试');//包含:测试
		var_dump($res);
		$res = $search->search('测试 文档');//包含:测试 和 文档
		var_dump($res);
	}catch(XSException $e){
		echo $e->getTraceAsString();
	}
使用sh setup.sh安装软件时,报以下错误:
...
configure: error: *** A compiler with support for C++11 language features is required.
---
ERROR: failed to configure xapian-core-scws, see 'setup.log' for more detail
原因:
gcc版本太低了。
解决:
(注意不要删除旧的gcc)
wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
tar -zxvf gcc-8.3.0.tar.gz
cd gcc-8.3.0
./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking whether g++ accepts -static-libstdc++ -static-libgcc... no
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.
使用gcc -v查看当前版本。
gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
gcc-c++
libtool
configure: error: configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
(1)安装GMP
	1、下载:wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
	2、解压:tar -jxvf gmp-6.1.2.tar.bz2
	3、进入目录:cd gmp-6.1.2
	4、配置:./configure
	5、编译:make
	6、安装:make install
(2)安装MPFR
	1、下载:wget https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.gz
	2、解压:tar -zxvf mpfr-4.0.2.tar.gz
	3、进入目录:cd mpfr-4.0.2
	4、配置:./configure
	5、编译:make
	6、安装:make install
(2)安装MPC
	1、下载:wget http://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
	2、解压:tar -zxvf mpc-1.1.0.tar.gz
	3、进入目录:cd mpc-1.1.0
	4、配置:./configure
	5、编译:make
	6、安装:make install
GMP简介:
gmp是一个任意精度算术的自由库,可以操作有符号整数、有理数和浮点数。除了运行GMP的机器中可用内存所暗示的精度外,没有实际限制。GMP有一套丰富的功能,这些功能有一个常规的接口。
MPFR简介:
MPFR库是一个C库,用于正确舍入的多精度浮点计算。MPFR基于GMP多精度库。
yum install gcc-c++
安装gcc时,使用make命令时,报如下错误:
...
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
....
问题的根源是缺少必要的C++库。
(1)CentOS系统,运行命令:
	yum install glibc-headers
	yum install gcc-c++
(2)Ubuntu系统中,运行命令:
	apt-get install build-essential 
	apt-get install g++
安装gcc时,使用make命令时,报如下错误:
 error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
解决办法:
sudo vi /etc/ld.so.conf
添加库路径  ./ (表示当前目录)
添加保存
然后
sudo ldconfig
查看gcc版本:
gcc -v
显示还是旧版本,4.4.7。
使用which gcc查看命令的位置:
结果显示:/usr/bin/gcc。
解决:
	(1)卸载旧的gcc:
		yum remove gcc。
	(2)配置新安装的gcc的位置到环境变量
	vim /etc/profile
    在文件末尾处增加以下代码,新安装的gcc路径
    export PATH=$PATH:/usr/local/gcc-8.3.0/bin/
    使修改的文件生效
    source /etc/profile
再次查看版本:
已变成8.3.0.
启动xunsearch时:
报错:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb
ar -x libstdc++6_4.7.2-5_i386.deb
tar -zxvf data.tar.gz
进入到gcc的目录中,
我的gcc安装位置是:/usr/local/gcc-8.3.0。
我的系统是64位的,所以进入到lib64目录下:
cd /usr/local/gcc-8.3.0/lib64/
查看libstdc++.so的最大数字。
ls
结果看到:
libstdc++.so.6.0.25
复制到/usr/lib64下(64位系统):
cp libstdc++.so.6.0.25 /usr/lib64/
进入到/usr/lib64下:
查看:
ls -l | grep libstdc++
lrwxrwxrwx.  1 root root       19 3月   4 10:32 libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x.  1 root root   987096 6月  19 2018 libstdc++.so.6.0.13
-rwxr-xr-x.  1 root root 12276491 3月  15 13:50 libstdc++.so.6.0.25
删除旧的软连接:
rm -f libstdc++.so.6
建立新的软连接:
ln -s libstdc++.so.6.0.25 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
Xunsearch入门的更多相关文章
- Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用
		
今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤. Xun ...
 - Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
		
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
 - ABP入门系列(1)——学习Abp框架之实操演练
		
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
 - Oracle分析函数入门
		
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
 - Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
		
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
 - Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
		
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
 - Angular2入门系列教程4-服务
		
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
 - wepack+sass+vue 入门教程(三)
		
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
 - wepack+sass+vue 入门教程(二)
		
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
 
随机推荐
- Radio 单选框
			
Radio 单选框 在一组备选项中进行单选 ¶基础用法 由于选项默认可见,不宜过多,若选项过多,建议使用 Select 选择器. 要使用 Radio 组件,只需要设置v-model绑定变量,选中意味着 ...
 - Windows下搭建Docker与Kubernetes(DevOps一)
			
Docker与Kubernetes (二)搭建 开通 Hyper-V 安装Docker for Windows 开通Kubernetes 3.关键概念 PodKubernetes 中的最小单元,一个 ...
 - 40组合总和II
			
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.candidates 中的每个数字在每个组合中只能使用一 ...
 - java:Cookie(常用操作),Cookie和Session免登录实例
			
1.常用操作: package cn.zzsxt.lee.web.cookie; import java.io.IOException; import javax.servlet.ServletEx ...
 - 修改Windows 2008以后系统的NTP服务设置
			
@echo off echo autor OAK @echo off echo -------------------------------- @echo off echo setup time r ...
 - Azure Data Lake Storage Gen2实战体验
			
相较传统的重量级OLAP数据仓库,“数据湖”以其数据体量大.综合成本低.支持非结构化数据.查询灵活多变等特点,受到越来越多企业的青睐,逐渐成为了现代数据平台的核心和架构范式. 作为微软Azure上最新 ...
 - github局部不同图片合并插件
			
用于解决游戏开发时,一套图里有局部地区图片不同其他地方相同,导致资源重复过大的问题 地址:https://github.com/Elringus/SpriteDicing
 - 将dos窗口调白教程
			
将dos弹出窗口调白教程 第1步:同时按住Win+R键,输入cmd 第2步:右键点击标题栏 第3步:点击默认值,然后再点击颜色 第四步:将窗口颜色设置为白色,字体颜色设置为黑色(效果测试)
 - Spring boot启动后没有生成日志文件问题排错
			
我的配置是: logging.file.name=spring-boot.log logging.file.path=D:/log/ 系统启动后日志文件没有生成 原因:一开始以为这两个属性是配合着使用 ...
 - [BZOJ2144][国家集训队2011]跳跳棋
			
题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上. 每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\),\(c\)这三个位置. 我们要通 ...