search
HomeDatabaseMysql Tutorial【原创】用coreseek快速搭建sphinx中文分词搜索引擎

以下内容基于linux 系统。 yum -y install glibc-common libtool autoconf automake mysql-devel expat-devel#如果不安装这个 可能下面 sh buildconf.sh会报错!!!cd /data/srctar -xjf ../software/autoconf-2.64.tar.bz2cd autoconf-2.64/./configuremak

以下内容基于linux 系统。

yum -y install glibc-common libtool autoconf automake mysql-devel expat-devel
#如果不安装这个 可能下面 sh buildconf.sh会报错!!!
cd /data/src
tar -xjf ../software/autoconf-2.64.tar.bz2
cd autoconf-2.64/
./configure
make && make install
cd ../
cd /data/software
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
cd /data/src
tar zxf ../software/coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta/mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install
cd ../
cd /data/src/coreseek-4.1-beta/csft-4.1/
sh buildconf.sh
./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --without-mysql
make && make install
cd ../
##测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)
cd testpack
cat var/test/test.xml    #此时应该正确显示中文
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
#创建sphinx创建索引的脚本:
mkdir -p /data/sh/other

vi /data/sh/other/sphinx_update_index.sh

#!/bin/bash
CONFFILE=/usr/local/coreseek/etc/sphinx_index.conf
/bin/sed s#var\/data\/#var\/data2\/#g ${CONFFILE} > ${CONFFILE}.2
mkdir -p /usr/local/coreseek/var/data2
#/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all --rotate
/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all
pkill -9 searchd
sleep 4
/bin/rm -rf /usr/local/coreseek/var/data/
/bin/mv /usr/local/coreseek/var/data2/ /usr/local/coreseek/var/data/
sleep 2
/usr/local/coreseek/bin/searchd --config ${CONFFILE}

chmod 755 /data/sh/other/sphinx_update_index.sh

#配置sphinx索引参数配置

vi /usr/local/coreseek/etc/sphinx_index.conf

################################### PHPCMS ############################################
source cc_phpcms
{
	type = mysql
	sql_host = 172.26.11.75  #此处请改成您的真实配置
	sql_user = phpcms  #此处请改成您的真实配置
	sql_pass = 123456   #此处请改成您的真实配置
	sql_db = phpcms   #此处请改成您的真实配置
	sql_port= 3306  #此处请改成您的真实配置
	sql_query_pre = SET SESSION query_cache_type=OFF
	sql_query_pre = SET character_set_client = 'gbk'
	sql_query_pre = SET character_set_connection ='gbk'
	sql_query_pre = SET character_set_results ='utf8'
	sql_query = SELECT `id`,`catid`,`typeid`,`title`,`status`,`updatetime` from `i_news` #此处请改成您的真实配置
	sql_range_step          = 1000
	sql_attr_timestamp      = updatetime
	sql_attr_uint           = catid
	sql_attr_uint           = typeid
	sql_attr_uint           = status
	sql_query_post  =
	sql_ranged_throttle= 0
}
index cc_phpcms
{
	source   = cc_phpcms
	path   = /dev/shm/cc_phpcms   #放这里比较好,因为这里是linux的内存区!
	docinfo   = extern
	mlock   = 0
	enable_star            = 1
	morphology   = none
	stopwords   =
	min_word_len  = 1
	charset_dictpath = /usr/local/mmseg3/etc/   #注意此处
	charset_type        = zh_cn.utf-8           #注意此处
	html_strip = 1
	html_remove_elements = style, script
	html_index_attrs = img=alt,title; a=title;
}
#################################### SETTING ############################################
indexer
{
	mem_limit   = 300M
}
searchd
{
	# address    = 0.0.0.0
	#listen                  = 3312
	#listen                  = 9312
	#listen                  = 9306:mysql41
	port    = 3312
	log     = /usr/local/coreseek/var/log/searchd.log
	query_log   = /usr/local/coreseek/var/log/query.log
	read_timeout  = 5
	max_children  = 30
	pid_file   = /usr/local/coreseek/var/log/searchd.pid
	max_matches   = 1000
	seamless_rotate  = 1
}

#接下来实现数据源支持:让sphinx支持MySQL数据源

yum -y install mysql-devel libxml2-devel expat-devel
cd /data/src/coreseek-4.1-beta/csft-4.1/
make clean
sh buildconf.sh
 ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ../

##如果出现错误提示:“ERROR: cannot find MySQL include files…….To disable MySQL support, use –without-mysql option.“,可按照如下方法处理:
##请找到头文件mysql.h所在的目录,一般是/usr/local/mysql/include,请替换为实际的
##请找到库文件libmysqlclient.a所在的目录,一般是/usr/local/mysql/lib,请替换为实际的
##configure参数加上:–with-mysql-includes=/usr/local/mysql/include –with-mysql-libs=/usr/local/mysql/lib,执行后,重新编译安装
#跑sphinx服务脚本
/data/sh/other/sphinx_update_index.sh

好了,如果一切正常,将会顺利看到创建索引的信息如下:
112 【原创】用coreseek快速搭建sphinx中文分词搜索引擎

下面写一段php代码进行测试(基于sphinx php 的api方式):

		$page = (int)$_GET['page'];
		$page = ($page==0)?1:$page;
		$perpage = 200;
		$start = ($page -1) * $perpage;
		$keyword = urldecode($_GET['key']);
		require_once (S_ROOT . './api/sphinxapi.php');//请改成您的真实路径
 		$groupby = "";
		$groupsort = "@group desc";
		$filter = "fieldid";
		$filtervals = array ();
		$distinct = "";
		$sortby = "";
		$cl = new SphinxClient();
		$cl->SetServer("localhost", 3312);
		$cl->SetWeights(array (
				100,
				1
		));
		$cl->SetMatchMode(SPH_MATCH_ANY);
		if (count($filtervals)) {
				$cl->SetFilter($filter, $filtervals);
		}
		if ($groupby) {
				$cl->SetGroupBy($groupby, SPH_GROUPBY_ATTR, $groupsort);
		}
		$order = 1;
		if ($order == 0) { //按时间倒序
				$cl->SetSortMode(SPH_SORT_ATTR_DESC, "inputtime");
		}
		elseif ($order == 1) { //按相关度排序
				$cl->SetSortMode(SPH_SORT_RELEVANCE);
		}
		if ($distinct) {
				$cl->SetGroupDistinct($distinct);
		}
		$cl->SetLimits($start, $perpage, ($limit > 1000) ? $limit : 1000);
		$cl->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
		$cl->SetArrayResult(true);
		$res = $cl->Query($keyword, 'cc_phpcms');
		print_r($res);die;

上面的php代码没有做输入的字符过滤,这个请按自己的需要加上。
另外,
/data/sh/other/sphinx_update_index.sh 跑了一次后,

vi /data/sh/other/sphinx_update_index.sh

#/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all --rotate
/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all

变成

/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all --rotate
#/usr/local/coreseek/bin/indexer --config ${CONFFILE}.2 --all

也就是将注释调换,这样以后就可以设定个定时计划跑/data/sh/other/sphinx_update_index.sh 脚本了,
跑了/sphinx_update_index.sh 脚本后,自动会用–rotate的方式重建索引,也就是说新增加的内容也将会被索引到了。

当然,最好的方法还是做个实时索引的配置,下一篇将会重点介绍sphinx的实时索引功能!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
华硕飞行堡垒7--原创华硕飞行堡垒7--原创Jul 14, 2023 pm 10:09 PM

  提起华硕旗下的游戏本,大家最先想起来的肯定是玩家国度,但除了玩家国度这个高端系列的游戏本之外,华硕旗下还有飞行堡垒系列的主流游戏本,下面我们就一起来看看游戏玩家呼声最高的华硕飞行堡垒7怎么样。  华硕飞行堡垒7  华硕旗下的飞行堡垒系列笔记本,定位轻松畅玩大型游戏,主打坚固与耐用,一直以来都是大众游戏玩家、学生群体的热门之选。  基本配置  首先我们来了解下这台飞行堡垒7的一些核心配置吧,从配置表中看,最值得注意的就是AMDRyzen73750H+NVIDIAGeForceGTX1660Ti

使用PHP和coreseek开发智能推荐系统的关键技术使用PHP和coreseek开发智能推荐系统的关键技术Aug 08, 2023 pm 11:37 PM

使用PHP和coreseek开发智能推荐系统的关键技术智能推荐系统是现代互联网应用中广泛使用的一种技术,它能够根据用户的兴趣和行为,为用户提供个性化的推荐内容。在本文中,我们将介绍如何使用PHP和coreseek开发一个基于关键技术的智能推荐系统。首先,我们需要了解一下coreseek是什么。coreseek是一个开源的全文检索引擎,它基于sphinx全文检

修改MD5后是否算为原创内容?修改MD5后是否算为原创内容?Feb 19, 2024 pm 08:04 PM

修改md5后算原创吗在互联网时代,创作原创内容成为了一种重要的价值和资源。然而,随之而来的就是对原创性的质疑和侵权行为。为了防止盗版和抄袭,很多人尝试使用不同的方法来保护自己的原创作品。其中一种常用的方法就是使用MD5算法对作品进行修改,以此来达到“算法保护”的作用。MD5(MessageDigestAlgorithm5)是一种常用的消息摘要算法,它能

构建基于PHP和coreseek的播客内容搜索工具构建基于PHP和coreseek的播客内容搜索工具Aug 07, 2023 am 10:40 AM

构建基于PHP和coreseek的播客内容搜索工具随着数字媒体的迅猛发展,播客(podcast)已经成为人们获取信息、娱乐和学习的重要渠道之一。然而,随着越来越多的播客内容产生,如何快速准确地找到感兴趣的内容成为了一个亟待解决的问题。本文将介绍如何使用PHP和coreseek构建一个高效的播客内容搜索工具,并提供相关的代码示例。首先,我们需要明确corese

利用PHP和coreseek实现精准的食谱搜索功能利用PHP和coreseek实现精准的食谱搜索功能Aug 05, 2023 pm 01:16 PM

利用PHP和coreseek实现精准的食谱搜索功能概述:在现如今的快节奏生活中,越来越多的人开始注重自己的饮食健康。找到合适的食谱成为了一种需求。本文将介绍如何利用PHP和coreseek搜索引擎实现精准的食谱搜索功能,帮助用户轻松查找到符合自己需求的食谱。准备工作:在开始之前,我们需要准备一些工具:PHP环境:在本地或者服务器上搭建PHP环境,确保可以运行

使用PHP和coreseek开发强大的电商平台商品搜索引擎使用PHP和coreseek开发强大的电商平台商品搜索引擎Aug 07, 2023 am 08:31 AM

使用PHP和coreseek开发强大的电商平台商品搜索引擎随着电子商务的快速发展,商品搜索引擎成为电商平台中不可或缺的一环。一个强大的商品搜索引擎可以帮助用户快速找到他们想要的商品,提升用户体验,从而增加销售量。本文将介绍如何使用PHP和coreseek开发一个强大的电商平台商品搜索引擎,并提供一些代码示例。一、coreseek简介coreseek是一个基于

利用PHP和coreseek实现精准的用户画像分析功能利用PHP和coreseek实现精准的用户画像分析功能Aug 07, 2023 am 08:57 AM

利用PHP和coreseek实现精准的用户画像分析功能摘要:随着互联网的普及和发展,人们在网络上留下了大量的个人信息,包括浏览历史、购买记录、社交网络等。利用这些数据可以对用户进行精准的画像分析,为企业提供更好的个性化推荐和定制化服务。本文将介绍如何利用PHP和coreseek实现这个功能,并提供代码示例。一、什么是用户画像分析功能?用户画像分析功能是指通过

使用PHP和coreseek打造人才招聘网站的职位搜索功能使用PHP和coreseek打造人才招聘网站的职位搜索功能Aug 06, 2023 pm 04:29 PM

使用PHP和coreseek打造人才招聘网站的职位搜索功能人才招聘网站在现代社会中扮演着重要的角色,为企业提供了一个便捷的方式来寻找合适的员工。而对于求职者来说,拥有一个高效的职位搜索功能也是非常重要的。本文将介绍如何使用PHP和coreseek,一个开源的全文搜索引擎,来为人才招聘网站构建一个功能强大的职位搜索功能。首先,我们需要确保PHP和coresee

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools