您的位置 首页 php

中文搜索解决方案sphinx的安装和使用(lnmp)

准备:centos6.5 lnmp 环境

下载 sphinx的最新版本Sphinx 2.2.11-release

开始安装

tar xf sphinx-2.2.11-release.tar.gz

cd sphinx-2.2.11-release

./configure –prefix=/usr/local/sphinx –with-mysql

make && make install

安装完毕后把测试数据导入数据库。

首先创建数据库 lampol

create database lampol;

导入事先准备好的sql语句(随便找了几个文章),表结构如下。

数据导入完毕,开始配置sphinx。

cd /usr/local/sphinx/etc/

cp sphinx.conf.dist sphinx.conf

修改配置文件如下

source articles

{

type = mysql

sql_host = localhost

sql_user = root

sql_pass = 123456

sql_db = lampol

sql_sock = /tmp/mysql.sock

sql_query_pre = SET NAMES utf8

sql_query_pre = SET SESSION query_cache_type=OFF

sql_query = SELECT id,auth_id,title,title as attr_title,content,content as attr_content FROM article

sql_attr_uint = auth_id

sql_attr_string = attr_title

sql_attr_string = attr_content

sql_ranged_throttle = 0

}

index article

{

source = articles

path = /usr/local/sphinx/ var /data/article

docinfo = extern

dict = keywords

mlock = 0

morphology = none

min_word_len = 1

ngram_len = 1

ngram_chars = U+3000..U+2FA1F

html_strip = 0

}

indexer

{

mem_limit = 128M

}

searchd

{

listen = 9312

listen = 9306:mysql41

log = /usr/local/sphinx/var/log/searchd.log

query_log = /usr/local/sphinx/var/log/query.log

read_timeout = 5

client_timeout = 300

max_children = 30

persistent_connections_limit = 30

pid_file = /usr/local/sphinx/var/log/searchd.pid

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

}

配置完毕,开始生成索引文件

/usr/local/sphinx/ bin /indexer –all

报错:

/usr/local/sphinx/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

解决:

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /lib64/libmysqlclient.so.18

再次运行成功。

开始运行后台searchd

开始测试。把两个文件复制到根目录下。

cp /home/sphinx-2.2.11-release/ api /sphinxapi.php /usr/local/ nginx /html/

cp /home/sphinx-2.2.11-release/api/test.php /usr/local/nginx/html/

开始进行搜索

会发现已经有一个匹配成功

然后进行页面的搜索

php代码:

<?php

require ( “sphinxapi.php” );

$cl = new SphinxClient ();

$q = $_POST[‘keywords’];

$host = “localhost”;

$port = 9312;

$index = “article”;

$ranker = SPH_RANK_PROXIMITY_BM25;

$cl->SetServer ( $host, $port );

$cl->SetConnectTimeout ( 1 );

$cl->SetArrayResult ( true );

$cl->SetRankingMode ( $ranker );

$res = $cl->Query ( $q, $index );

echo ‘<pre>’;

var_dump($res[‘matches’]);

echo ‘</pre>’;

页面开始搜索迪拜

返回搜索后的结果

至此已经完毕,其他更多功能大家可以进一步去探索。

文章来源:智云一二三科技

文章标题:中文搜索解决方案sphinx的安装和使用(lnmp)

文章地址:https://www.zhihuclub.com/153607.shtml

关于作者: 智云科技

热门文章

网站地图