澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站Thinkphp搭建中文搜索引擎详解

2019-10-30 作者:www.8455.com   |   浏览(179)

介绍:
Coreseek 是生龙活虎款中文全文字笔迹核算索/找出软件,以GPLv2许可协商开源揭橥,基于Sphinx研究开发并单独宣布,专攻中文寻找和音讯管理领域,适用于同行当/垂直找出、论坛/站内找寻、数据库寻觅、文书档案/文献检索、音讯寻觅、数据发掘等接纳场景,客户能够无需付费下载使用;
Coreseek 周密扶助: FreeBSD6/7/8,Mac OS X 10.6,ENVISIONHEL5、CentOS-5、Fedora-12/13、gentoo-10、openSUSE-10/11、slackware-13.0/13.1、debian-5、ubuntu-9/10、archlinux-2009,WindowsXP、Windows2000、Windows7、Windows Server 2010等,32与六16位操作系统均可使用,可支撑MySQL、MariaDB、PostgreSQL、SQL Server、Oracle等种种数据库系统,

转载自:  

鉴于工作需要,需在站点中增加一个搜索的法力,检索的基准有四个且权重为  标题 > 标签 > 内容。在技术选型的长河初级中学结束学业生升学考试虑了Lucenne、Sphinx、XunSearch三种索搜引擎,加上工作的需要,数据量大约在后生可畏万左右,并且是用PHP开垦,所以最终选用了XunSearch,XunSearch对普通话的协助也是不行棒的,也提供了宏观的API文书档案,开荒起来极度快。Lucenne、Sphinx对时局据量帮衬的相比好,品质超级高。Lucenne供给java景况的支撑而本人那边是PHP的境况,所以清除了。再来看看大家的Sphinx:

提供那贰个好处:

 

Sphinx扶助高速创设目录(可达10MB/秒,而Lucene创设目录的速度是1.8MB/秒)

高质量搜索(在2-4 GB的文本上查找,平均0.1秒内获取结果)

高扩展性(实测最高可对100GB的公文创建目录,单一索引可含蓄1亿条记下)

支撑布满式检索

支撑基于短语和基于计算的复合结果排序机制

支持狂妄数量的文书字段(数值属性或全文字笔迹核算索属性)

补助分裂的研究方式(“完全合营”,“短语相配”和“任生龙活虎匹配”)

协助作为Mysql的囤积引擎

等等。。。

    扶持顾客找到你职业中,最近经过全网寻找找不到的十分九的音信;
    能够保险本人音信的私密性,那在同盟社集体中进一步关键;
    减弱服务器的运维负载,升高系统响应速度,从而大幅收缩您的营业资本;
    为您的供给更正检索结果的显现形式,越来越好的团体数据;
    扶植你发掘顾客提交的敏锐文书档案或广告。

一, 前言   

澳门新萄京官方网站Thinkphp搭建中文搜索引擎详解。在网络找了超级多安装教程,安装的狠蛋疼,最后在博客上找到了三个比较好的,原来的小说点这里,笔者在它下边改了一点东西,扩张性别变化得也正如好,关于Coreseek的求证英特网一大推,这里就不再说了,个人明白Coreseek = Sphinx 汉语分词。废话少之甚少说,走入正题

标准应用场景:

1,研究coreseek的动机

   小编有三个谐和的笔记博客,平时在地点做一些技术文章剖判。在询问部分随笔的时候,以前只可以将在查询的剧情去mysql中用like模糊相称。在篇章多了的场地下,那样做法作用必然非常。于是自身把对象投向了中文寻觅插件coreseek,并打响的把它选择到了自个儿的品类此中。

效果图:澳门新萄京官方网站 1

目的在于通过那篇深入分析,让有意思味的校友少走些弯路。

1、先安装情形:

你在营业知识分享型的社区(Forum):

2,概念介绍

  sphinx是开源的寻觅引擎,它支持斯拉维尼亚语的全文字笔迹查验索。但波兰语的天赋分词符是空格,而中文则有相比复杂的分词供给。中华夏儿女民共和国人提供了三个可供企业选择的,基于Sphinx的华语全文字笔迹核实索引擎。也正是说Coreseek实际上的水源照旧Sphinx。但其最大的不等是coreseek有叁个汉语分词利器mmseg。

yum install make gcc gcc gcc-c libtool autoconf automake imake mysql-devellibxml2-develexpat-devel

注: 检查测量检验以上软件是还是不是安装,若无请确定保证卫安全装;否则不可能寻常安装Coreseek-3.2.14

    大批量的新来客商对少数轻巧的主题材料一再发帖询问,版主不惮其烦;
    大批量不菲的答案、精辟的眼光被杀绝在平复中,通过帖子宗旨检索不到;
    为了减少服务器负荷,您必须要限定客户每30秒才能应用寻找效果三次,客户很难熬,您很伤心;
    为了增长劳务质量,您寄希望于谷歌、百度那样的全网寻找引擎,不过你的数目更新恐怕比不上时,更不行的是有些私密的主旨,您不想让除了您和您的登记顾客以外的第三方领悟;

3,情况介绍

  系统:Ubuntu

  http服务:Apache/2.2.22

  Mysql:  Ver 14.14 Distrib 5.5.41

  PHP:  PHP 5.3.10

2、先河设置:

您在运维社会化社交网络(SNS):

  二, 下载并安装Coreseek   

安装步骤

下载coreseek-3.2.14.tar.gz,并放置在/usr/local/src

率先,为了制止安装中冒出正视包缺点和失误,你要求补一下血

apt-get install make gcc g   automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev

上边十三分命令你施行就行,不然或者会因为软件包非常不够新出现各类奇葩难点。比如小编就立异了159M的软件包。(作者在遇见各样坑后才回头补的血)

 

1,安装mmseg分词模块

澳门新萄京官方网站 2

cd /usr/local/src

tar zxvf coreseek-3.2.14.tar.gz #解压

cd coreseek-3.2.14

cd mmseg-3.2.14

./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/mmseg3 #配置

make #编译

make install #安装

澳门新萄京官方网站 3

1.1)大概遇见的主题素材和化解办法:
在执行./bootstrap时出现./bootstrap: 27: ./bootstrap: autoconf: not found 的错误,

由来:因为未有安装automake 工具, (ubuntu 10.04)用上面包车型大巴一声令下安装好就可以了。

sudo apt-get install autoconf automake libtool

1.2)恐怕遇见的难点:在安装分词模块 mmseg ,编写翻译安装到最后,现身annot find input file: src/Makefile.in      的荒唐
接下来查了须臾间,只找到解决办法,如下:

aclocal //是多个perl 脚本程序,它的概念是:“aclocal - create aclocal.m4 by scanning configure.ac”

澳门新萄京官方网站 4

libtoolize --force //运行后有一个错误,不用管它。

automake --add-missing

autoconf

autoheader

make clean

澳门新萄京官方网站 5

接下来在重复编写翻译
./configure --prefix=/usr/local/mmseg3
make && make install 
编写翻译安装成功

总计:其实那一个报错原因作者也没查出来。反正依照消除办法就打响了,什么人若知道拜托请留言,谢谢。

2、安装CoreSeek

澳门新萄京官方网站 6

cd /usr/local/src

cd coreseek-3.2.14

cd csft-3.2.14

sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决

./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  #安装

澳门新萄京官方网站 7

3,测试mmseg分词、coreseek搜索、MySQL数据源

cd /usr/local/src

cd coreseek-3.2.14

cd testpack

cat /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml    #这会儿应当科学展现普通话,如下图所示

澳门新萄京官方网站 8

/usr/local/mmseg3/bin/mmseg  -d  /usr/local/mmseg3/etc  /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml

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

/usr/local/coreseek/bin/search -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf 互联网检索

澳门新萄京官方网站 9

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx-min.conf.dist

/usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all --rotate  #开始服务,更新索引

澳门新萄京官方网站 10

如图,且无报错。则证实您的coreseek已经能够符合规律运作了。

3.1)恐怕遇见的难点与解决办法:

在输入/usr/local/coreseek/bin/indexer -c etc/csft.conf --all,报xmlpipe2 support NOT compiled in. To use xmlpipe2, install missing错误

 原因:

缺少xmlpipe2库,解决:

apt-get install expat-* 

接下来再一次编写翻译coreseek,记得make clean

 

4,coreseek配置和动用

cp  /usr/local/src/coreseek-3.2.14/testpack/etc/csft_mysql.conf  /usr/local/coreseek/etc/csft_mysql.conf  #拷贝MySQL数据源配置文件

ln -s  /usr/local/coreseek/etc/csft_mysql.conf  /etc/csft_mysql.conf  #添加软连接

vim  /etc/csft_mysql.conf  #编辑,修改

在coreseek的官方网址下载coreseek-3.2.14.tar.gz,传到本人的服务器/usr/local/下,反正小编在利用命令wget

    如何让你的客户找到志趣相同的恋人?
    如何扶植客商更加好的管制本身的Blog?

 三, 更正Coreseek配置文件   

以自家本身的布署文件为例:

/usr/local/coreseek/etc/csft_mysql.conf

澳门新萄京官方网站 11

#索引源定义
source mysql
{
    type                    = mysql
    sql_host                = localhost
    sql_user                =xxxx
    sql_pass                =xxxx
    sql_db                    =xxxx
    sql_port                = 3306
    sql_query_pre            = SET NAMES utf8
    sql_query                = SELECT id,id,uid,title,data FROM notebook_notepad
                                                              #sql_query第一列id需为整数
                                                              #title、data作为字符串/文本字段,被全文索引
    sql_attr_uint            = id           #从SQL读取到的值必须为整数
    #sql_attr_timestamp        = time  #从SQL读取到的值必须为整数,作为时间属性
    sql_attr_uint   = uid

    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT * FROM notebook_notepad WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}

#index定义
index mysql
{
    source            = mysql             #对应的source名称
    path            =/usr/local/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    #charset_dictpath = etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
}

#全局index定义
indexer
{
    mem_limit            = 128M
}

#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file =/usr/local/coreseek/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log =/usr/local/coreseek/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log =/usr/local/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

澳门新萄京官方网站 12

诸有此类搜索的话就能够从目录文件中搜查缉获id,uid,title,data字段。

OK,配置达成未来,重启Coreseek 服务就能够从生产你想要的询问索引,现在你就能够解脱mysql的羁绊,什么中文,斯洛伐克共和国(The Slovak Republic)语都得以,还自带分词。如何,是或不是张开了新世界的大门。

上面讲一下重新创立索引或然出错的地点,以致化解办法。有意思味的同校看一下,不然能够跳到下大器晚成节:PHP测量试验Coreseek 。

重新建构索引时报错误:WAEscortNING: failed to open pid_file '/usr/local/coreseek/var/log/searchd_mysql.pid'.

减轻方式:
试着甘休一下coreseek服务
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --stop 截止服务

下一场重启
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf 运营服务

再一次成立目录
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all 创设目录

若果提醒:FATAL: failed to lock /usr/local/coreseek/var/data/xxxx.spl: Resource temporarily unavailable, will not index. Try --rotate option.

则尝试重新建立索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate 重新创建索引

 

留神:原版的书文mmseg是设置在/usr/local/mmseg3下,作者是设置在/usr/local/mmseg,所以导致本人在背后创立索引的时候报错,如图

您在运维电子商务网址(e-Shop):

 四, PHP测试Coreseek   

 1,将sphinxapi.php放到测量检验目录下

cp  /usr/local/src/coreseek-3.2.14/testpack/api/sphinxapi.php ./

vim test.php

澳门新萄京官方网站 13

    header("Content-type: text/html; charset=utf-8");
    //require("./    ");
    $s = new SphinxClient;
    $s->setServer("127.0.0.1", 9312);
    //SPH_MATCH_ALL, 匹配所有查询词(默认模式); SPH_MATCH_ANY, 匹配查询词中的任意一个; SPH_MATCH_EXTENDED2, 支持特殊运算符查询
    $s->setMatchMode(SPH_MATCH_ALL);
    $s->setMaxQueryTime(30);                                        //设置最大搜索时间
    $s->SetArrayResult(false);                                        //是否将Matches的key用ID代替
    $s->SetSelect ( "*" );                                            //设置返回信息的内容,等同于SQL
    $s->SetRankingMode(SPH_RANK_BM25);
    $s->SetLimits ( 0, 30, 1000, 0 );                                //设置结果集偏移量  SetLimits 
    $res = $s->query('coreseek','mysql','--single-0-query--');         #[coreseek]关键字,[mysql]数据源source

    $err = $s->GetLastError();
    echo '<pre>';
    var_dump($res);
    var_dump($res['matches']);
    var_export($err);
    echo '</pre>';

澳门新萄京官方网站 14

php5 test.php

运作结果:matches为相称后的结果集

澳门新萄京官方网站 15

 

澳门新萄京官方网站 16

    怎么着让各样访客尽快找到他/她感兴趣的货色,完成发卖?

 五, Coreseek在Thinkphp中的使用   

 1,Sphinx扩大安装安装

Coreseek官方教程中国建工业总集结团议php使用直接include一个php文件进行操作,事实上php有独立的sphinx模块能够从来操作coreseek(coreseek便是sphinx!)已经步入了php的官方函数库,而且成效越来越高!但php模块依赖于libsphinxclient包。笔者是依据以下那篇小说的步子安装了Sphinx扩充。

感谢:

[第一步] 安装依赖libsphinxclient

澳门新萄京官方网站 17

# cd /var/install/coreseek-4.1-beta/csft-4.1/api/libsphinxclient/
# ./configure  --prefix=/usr/local/sphinxclient

configure: creating ./config.status
config.status: creating Makefile
config.status: error: cannot find input file: Makefile.in   #报错configure失败    

//处理configure报错
编译过程中报了一个config.status: error: cannot find input file: src/Makefile.in这个的错误,然后运行下列指令再次编译就能通过了:
# aclocal
# libtoolize --force
# automake --add-missing
# autoconf
# autoheader
# make clean

//从新configure编译
# ./configure

# make && make install

澳门新萄京官方网站 18

[第二步] 安装sphinx的PHP扩展

澳门新萄京官方网站 19

http://pecl.php.net/package/sphinx
# wget http://pecl.php.net/get/sphinx-1.3.0.tgz
# tar zxvf sphinx-1.3.0.tgz
# cd sphinx-1.3.0
# phpize
# ./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient
# make && make install
# cd /etc/php.d/
# cp gd.ini  sphinx.ini
# vi sphinx.ini

extension=sphinx.so

# service php-fpm restart

澳门新萄京官方网站 20

 安装完PHP的Sphinx扩大后,即可直接选拔$coreseek = new SphinxClient();而没有必要引进源文件了。

简来说之说一下自身在TP里应用coreseek查询,并高亮关键词的思绪:

1,通过sphinx查出id,uid的集合
2,然后$sql = "select * from post where id in($ids)";$res = mysql_query($sql);获取到数据库的诚实数据
3,用BuildExcerpts将title和data的显要字高亮,然后分页显示

关键代码:

澳门新萄京官方网站 21

     $where = array();
        $where['uid']=$uid;
        if(!empty($search)){    //有需要查找的内容,则去 coreseek 忠查出对应的id
            $coreseek = new SphinxClient();
            $coreseek->setServer("127.0.0.1", 9312);
            //SPH_MATCH_ALL, 匹配所有查询词(默认模式); SPH_MATCH_ANY, 匹配查询词中的任意一个; SPH_MATCH_EXTENDED2, 支持特殊运算符查询
            $coreseek->setMatchMode(SPH_MATCH_ALL);
            $coreseek->setMaxQueryTime(30);                        //设置最大搜索时间
            $coreseek->SetArrayResult(false);                    //是否将Matches的key用ID代替
            $coreseek->SetSelect ( "*" );                        //设置返回信息的内容,等同于SQL
            $coreseek->SetLimits ( 0, 30, 1000, 0 );            //设置结果集偏移量  SetLimits
            $res = $coreseek->query($search,'mysql','--single-0-query--');
            $key = array_keys($res['matches']);
            $where['id']=array('in',$key);
            $coreseek->close();
        }else{

        }
        //获取总数据条数
        $total=$mod->where($where)->count();

澳门新萄京官方网站 22

高亮的重大代码:

澳门新萄京官方网站 23

     if(!empty($search)){
            $page->parameter['search']=$search;
            //代码高亮
            $opt = array("before_match"=>"<font style='font-weight:bold;color:#f00'>","after_match"=>"</font>");
            $coreseek1 = new SphinxClient();
            $coreseek1->setServer("127.0.0.1", 9312);
            $coreseek1->SetMatchMode(SPH_MATCH_ALL);
            $i=0;
            $tags_title=array();
            foreach($info as $key=>$row){
                $tags_title[]=$row['title'];
            }
            $replace_title=$coreseek1->BuildExcerpts($tags_title,'mysql',$search,$opt);
            foreach($info as $key=>&$row){
                $info[$key]['title']=$replace_title[$key];
            }
            $coreseek1->close();
        }

澳门新萄京官方网站 24

OK,至此,coreseek已经能够在TP里周密运维了。这篇分享的文章也能够画上句号了。以上是自家一步步装置时的内情,记录下怕今后自身忘记,也意在能给感兴趣的同桌一些辅助。文章新闻量偏大,纵然有啥样脱漏,万望指正!

新兴探究着在路线/usr/local/coreseek-3.2.14/testpack/etc在此个渠道下,将代码

您每一天要求管理多量的电子文书档案(CMS):

charset_dictpath = /usr/local/mmseg3/etc/改成charset_dictpath = /usr/local/mmseg/etc/就可以。。。

    如何在最短的时刻内找到你要求的文件
    如何使用现存文件的剧情加快你新文书档案的作文专业?

进入/usr/local/下

tar -zxvf coreseek-3.2.14.tar.gz

cd coreseek-3.2.14

##############安装 mmseg #################

cd mmseg-3.2.14

./bootstrap   #出口的warning音讯方可忽略,若是现身error则必要肃清,日常不会不由自主谬误

./configure --prefix=/usr/local/mmseg    #钦定 mmseg 的安装目录

make && make install

#############安装 csft-3.2.14 ###############

cd /usr/local/coreseek-3.2.14/csft-3.2.14

#此处咱们要改进 src/sphinxexpr.cpp 文件,将该文件中的 1013、1047、1080 行的 ExprEval 改为 this->Expr伊娃l(这里的行数跟互连网的教程说的行数不等同,也许是本子的主题材料吗,不过大器晚成旦您用的是自笔者提供的版本,该行数是没有错的),懂点 C 的同室也能够自个儿看看 ExprEval 错在何地。哈哈自小编不懂C 都看懂了。。。

#改完上边所说的难题后:

sh buildconf.sh

./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/--with-mmseg-libs=/usr/local/mmseg/lib/--with-mysql

make && make install

全文字笔迹核查索 vs.数据库

在装置的进程中,只要不提示错误 error,那么任何的如 warning 音讯都以足以忽视的。

已知客商:
开源php系统结合:
    PHPWind:Ali旗下德天消息透露的境内最受接待的通用型社区前后相继之生龙活虎
    Discuz! X:Tencent旗下康盛创想推出的通用社区软件系统;
    PHPCMS:盛大旗下厂商生产的境内抢先的开源网址内容管理体系
    CMSTOP:中华夏族民共和国抢先的内容管理连串软件与劳动提供商思拓合众推出的传播媒介首推CMS内容管理连串
澳门新萄京官方网站,    德德CMS:织梦CMS是境内最著名的PHP开源网址管理体系
    PHP168:中夏族民共和国南方最大的PHP开源系统提供商推出的开源CMS系统

由来大家曾经打响的将粤语查找引擎安装到大家服务器上来了。

安装
  1、下载
    从 下载coreseek win32本子,六十三人也可用

3、测试

  2、解压到D:coreseek-3.2.14-win32(随意)

进去目录/usr/local/coreseek-3.2.14/testpack

  3、步向目录点击当中test开始的文本,举行查找测验
 如不使用自带的test测量检验,必得从桌面-初始-运营-输入CMD,张开命令行窗口,然后推行:
 CD D:coreseek-3.2.14-win32
 SET PATH=

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站Thinkphp搭建中文搜索引擎详解

关键词: