PHP实现关键词全文搜索Sphinx及中文分词Coreseek的安装配置

一、需求

  实现文章标题中或分类(甚至文章内容)包含搜索词的文章,按照搜索词出现的频率的权重展示。

二、环境

  Nginx+PHP+Mysql(系统Centos7)。

三、安装

  1.安装依赖

yum  -y  install  make  gcc  gcc-c++  libtool  autoconf  automake  imake  mariadb  mariadb-server  mariadb-devel libxml2-devel expat-devel

  2.下载软件包

git clone https://github.com/wanqianworld/coreseek4.1.git
cd coreseek4.1 #下载完成后进入目录

  3.解压coreseek

tar  -xzf  coreseek-4.1-beta.tar.gz

  4.安装mmseg

cd  coreseek-4.1-beta/mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install

  5.安装coreseek

  5.1.修改配置

cd  ../csft-4.1
vim configure.ac
将
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
修改为
AM_INIT_AUTOMAKE([-Wall foreign])

  5.2.下载软件

yum  -y  install  patch

  5.3.打补丁

patch  -p1  <  /yourpath/sphinx/sphinxexpr.cpp-csft-4.1-beta.patch
输入:
/yourpath/sphinx/coreseek-4.1-beta/csft-4.1/src/sphinxexpr.cpp

  5.4.安装

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

  6.1.测试中文分词

cd  ../testpack/
/usr/local/mmseg3/bin/mmseg  -d  /usr/local/mmseg3/etc var/test/test.xml #测试中文分词

  6.2.创建索引

/usr/local/coreseek/bin/indexer  -c  etc/csft.conf  --all

  6.3.搜索测试

/usr/local/coreseek/bin/search  -c  etc/csft.conf  李彦宏

  7.php连接sphinx

cd  ../csft-4.1/api/libsphinxclient/ #进入目录

aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean
./configure  --prefix=/usr/local/sphinxclient
make  &&  make install  #编译

cd  ../../../../ #回到软件包目录
tar  -xzf  sphinx-1.3.0.tgz  #解压
yum  -y  install  php  php-devel #安装php-devel

cd  sphinx-1.3.0  #安装
phpize
./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient
make && make install

  7.1.开启php-sphinx扩展

vim /etc/php.ini
在末尾加上:
[sphinx]
extension=sphinx.so

  8.测试

  8.1.添加测试数据

mysql  -uroot  -p123456  <  /usr/local/coreseek/etc/example.sql

  8.2复制配置文件

cp  /usr/local/coreseek/etc/sphinx.conf.dist  /usr/local/coreseek/etc/csft.conf
cp  /home/lee/sphinx/coreseek-4.1-beta/mmseg-3.2.14/data/*  /usr/local/mmseg3/etc/

  8.3.修改配置文件

vim /usr/local/coreseek/etc/csft.conf
source src1
{
type            = mysql
sql_host        = 127.0.0.1
sql_user        = root
sql_pass        = 123456
sql_db          = test
sql_port        = 3306  # optional, default is 3306
sql_query_pre = SET NAMES utf8
sql_sock = /var/lib/mysql/mysql.sock
sql_query       =     SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content     FROM documents
sql_attr_uint       = group_id
sql_attr_timestamp  = date_added
sql_ranged_throttle = 0
sql_query_info_pre = SET NAMES utf8
sql_query_info      = SELECT * FROM documents WHERE id=$id
}
source src1throttled : src1
{
sql_ranged_throttle = 100
}
index test1
{
source          = src1
path            = /usr/local/coreseek/var/data/test1
docinfo         = extern
mlock           = 0
morphology      = none
min_word_len        = 1
html_strip      = 0
charset_dictpath = /usr/local/mmseg3/etc/
charset_type        = zh_cn.utf-8
}
indexer
{
mem_limit       = 128M
}
searchd
{
listen          = 9312
listen          = 9306:mysql41
log         = /usr/local/coreseek/var/log/searchd.log
query_log       = /usr/local/coreseek/var/log/query.log
read_timeout        = 5
client_timeout      = 300
max_children        = 30
pid_file        = /usr/local/coreseek/var/log/searchd.pid
max_matches     = 1000
seamless_rotate     = 1
preopen_indexes     = 1
unlink_old      = 1
mva_updates_pool    = 1M
max_packet_size     = 8M
max_filters     = 256
max_filter_values   = 4096
max_batch_queries   = 32
workers         = threads # for RT to work
}

  8.4.复制二进制文件

cp  /usr/local/coreseek/bin/*  /usr/bin/

  8.5生成索引

indexer  --rotate  --all

  8.6. 启动服务

searchd

  8.7.停止服务

searchd  --stop

  9.测试

  编写测试脚本:

vim test.php
<?php
$sphinx = new SphinxClient();
$sphinx->SetServer("127.0.0.1",9312);
$sphinx->SetMatchMode(SPH_MATCH_ALL);
$sphinx->SetLimits(0, 20, 1000);
$sphinx->SetArrayResult(true);
$result = $sphinx -> query("one","test1");
var_dump($result);

  运行脚本:

php test.php

原文地址:https://www.cnblogs.com/yuanwanli/p/12683351.html

时间: 2024-11-10 19:37:31

PHP实现关键词全文搜索Sphinx及中文分词Coreseek的安装配置的相关文章

Elasticsearch 中文分词插件 jcseg 安装 (Ubuntu 14.04 下)

搜索可以说是开发中很常见的场景了,同样这次也一样... 之前的组合多数是选择 Mysql + Sphinx ,这次因为工作原因不再使用这种组合,虽然是老牌组合,但是确实限制诸多,而且每次配环境也是个问题,挺烦的...这次就尝试使用 Elasticsearch + Jcseg ,因为在文档检索方面 elasticsearch 做的相当不错,但是对中文环境来说就差一个很好的中文分词器,还好,国内好的中文分词器也有蛮多,但是我个人还是比较推荐 Jcseg . 好了,废话不多扯. 版本说明: elast

ES ik中文分词器的安装

ik分词是一款流行的elasticsearch 中文分词器,安装ik分词器版本一定要与所安装es版本一致. 安装步骤: 1.解压ik分词器安装包到plugin目录下,并删除压缩包. 2.重启elasticsearch进程即可. 3.如果是es集群的话,每台es都需要安装ik分词器. 测试: Curl "http://ES_IP:9200/_analyze?analyzer=ik_smart&pretty=true&text=%E6%88%91%E6%98%AF%E4%B8%AD%

PHP基于Sphinx+Swcs中文分词的全文的检索

简介 Sphinx是开源的搜索引擎,它支持英文的全文检索.所以如果单独搭建Sphinx,你就已经可以使用全文索引了 但是有些时候我们还要进行中文分词所有scws就出现了,我们也可以使用Coreseek来建立中文索引,而Coreseek的内核就是Sphinx 1.环境 PHP 5.5.23+centos 6.5+mysql  Ver 14.14 Distrib 5.1.73 2.安装sphinx cd /usr/local/src wget http://sphinxsearch.com/file

30.IK中文分词器的安装和简单使用

在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中文字符一个一个的切割开来,比如说中国人 --> 中 国 人 在中方搜索引擎领域,比较成熟和流行的,就是ik分词器. 一.在elasticsearch中安装ik中文分词器 (1)git clone https://github.com/medcl/elasticsearch-analysis-ik (

solr中文分词器IK-analyzer安装

solr本身对中文是不支持的,所以需要下载中文分词器IK-analyzer  下载地址https://code.google.com/archive/p/ik-analyzer/downloads.自己本地系统是centos6.7,所以下载了https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IK%20Analyzer%202012FF_hf1.zip 安装步骤:

solr8.0 ik中文分词器的简单配置(二)

下载ik分词器,由于是solr8.0,一些ik分词器版本可能不兼容,以下是个人亲测可行的版本 链接:https://pan.baidu.com/s/1_Va-9af-jMcqepGQ9nWo3Q 提取码:0a3y 然后将解压出来的两个jar包放到以下路径: 其它的三个文件放到以下路径: 如果没有classes文件夹就创建一个 然后进行ik分词器的配置,编辑以下路径的managed-schema文件 将以下配置放到后边 <!-- ik分词器 --> <fieldType name=&quo

Mysql+Sphinx实现全文搜索

最近在做一个搜索引擎,主要是对图书方面的对象级的搜索,首先来了解下Sphinx吧. 它能够提高你的查询的速度,这个不是一般的快. Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,他可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索.         Sphinx特别为一些脚本语言设计搜索API接口,如:PHP.Python.Perl.Ruby等,同时为MySQL也设计了一个存储引擎插件. Sphinx单一索引最大可包含1亿

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin