mysql sphinx 中文搜索_sphinx+mysql+mmseg 实现中文全站搜索 安装配置文档

一、Sphinx的特性

高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可

处理100 M 文档);

提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

支持分布式搜索;

可作为MySQL的存储引擎提供搜索服务;

支持布尔、短语、词语相似度等多种检索模式;

文档支持多个全文检索字段(最大不超过32个);

文档支持多个额外的属性信息(例如:分组信息,时间戳等);

停止词查询;

支持单一字节编码和UTF-8编码;

原生的MySQL支持(同时支持MyISAM 和InnoDB );

原生的PostgreSQL 支持.

二、安装中文分词mmseg

下载mmseg

wget http://www.coreseek.com/uploads/sources/mmseg-0.7.3.tar.gz

编译安装

tar zxf mmseg-0.7.3.tar.gz && cd mmseg-0.7.3

./configure --prefix=/usr/local/mmseg

`make && make install

ln -s /usr/local/mmseg/bin/mmseg /usr/bin/

如果出现 make[2]: *** [UnigramCorpusReader.lo] Error 1报错,解决方法如下:

vim src/css/UnigramCorpusReader.cpp

在23行加入#include 重新编译

测试安装成功如下所示

[root@iZ28bak61f3Z bin]#mmseg

Coreseek COS(tm) MM Segment 1.0

Copyright By Coreseek.com All Right Reserved.

Usage: ./mmseg

-u Unigram Dictionary

-r Combine with -u, used a plain text build Unigram Dictionary, default Off

-b Synonyms Dictionary

-h print this help and exit

三、编译安装配置 (MySQL 5.6.24)

下载sphinx

wget http://pkgs.fedoraproject.org/repo/pkgs/sphinx/sphinx-0.9.9.tar.gz/7b9b618cb9b378f949bb1b91ddcc4f54/sphinx-0.9.9.tar.gz

编译安装sphinx

tar zxf sphinx-0.9.9.tar.gz

cd sphinx-0.9.9

yum install python-devel

./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mmseg

make && make install

配置sphinx

cd /usr/local/sphinx/etc/

cp sphinx.conf.dist sphinx.conf

修改以下内容

type = mysql

sql_host = localhost

sql_user = root

sql_pass = ****

sql_db = test

sql_port = 3306

四、建立索引

创建一个test库,导入 example.sql,进行测试

mysql -uroot -p < /usr/local/sphinx/etc/example.sql

索引的建立方法:

/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf test1

test1为资源名称 不写为默认所有都建立索引,出现如下提示,说明索引建立完成

Sphinx 0.9.9-release (r2117)

Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/usr/local/sphinx/etc/sphinx.conf'...

indexing index 'test1'...

collected 4 docs, 0.0 MB

sorted 0.0 Mhits, 100.0% done

total 4 docs, 193 bytes

total 0.030 sec, 6256 bytes/sec, 129.67 docs/sec

total 2 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

total 7 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

五、启动服务器

开启

/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

关闭

/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf --stop

通过search工具查询

/usr/local/sphinx/bin/search --config /usr/local/sphinx/etc/sphinx.conf test

Sphinx 0.9.9-release (r2117)

Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/usr/local/sphinx/etc/sphinx.conf'...

index 'test1': query 'test ': returned 3 matches of 3 total in 0.000 sec

displaying matches:

1. document=1, weight=2, group_id=1, date_added=Wed Oct 14 15:01:39 2015

id=1

group_id=1

group_id2=5

date_added=2015-10-14 15:01:39

title=test one

content=this is my test document number one. also checking search within phrases.

2. document=2, weight=2, group_id=1, date_added=Wed Oct 14 15:01:39 2015

id=2

group_id=1

group_id2=6

date_added=2015-10-14 15:01:39

title=test two

content=this is my test document number two

3. document=4, weight=1, group_id=2, date_added=Wed Oct 14 15:01:39 2015

id=4

group_id=2

group_id2=8

date_added=2015-10-14 15:01:39

title=doc number four

content=this is to test groups

words:

1. 'test': 3 documents, 5 hits

六、sphinx 启动脚本

vim /etc/init.d/sphinx

#!/bin/bash

# sphinx: Startup script for Sphinx search

#

# chkconfig: 345 86 14

# description: This is a daemon for high performance full text /

# search of MySQL and PostgreSQL databases. /

# See http://www.sphinxsearch.com/ for more info.

#

# processname: searchd

# pidfile: $sphinxlocation/var/log/searchd.pid

# Source function library.

. /etc/rc.d/init.d/functions

processname=searchd

servicename=sphinx

username=sphinx

sphinxlocation=/usr/local/sphinx

pidfile=$sphinxlocation/var/log/searchd.pid

searchd=$sphinxlocation/bin/searchd

RETVAL=0

PATH=$PATH:$sphinxlocation/bin

start() {

echo -n $"Starting Sphinx daemon: "

daemon --user=$username --check $servicename $processname

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename

}

stop() {

echo -n $"Stopping Sphinx daemon: "

$searchd --stop

#killproc -p $pidfile $servicename -TERM

RETVAL=$?

echo

if [ $RETVAL -eq 0 ]; then

rm -f /var/lock/subsys/$servicename

rm -f $pidfile

fi

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status $processname

RETVAL=$?

;;

restart)

stop

sleep 3

start

;;

condrestart)

if [ -f /var/lock/subsys/$servicename ]; then

stop

sleep 3

start

fi

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart}"

;;

esac

exit $RETVAL

chmod 755 /etc/init.d/sphinx

chkconfig --add sphinx

chkconfig --level 345 sphinx on #开机启动

service sphinx start #运行

service sphinx stop #停止

service sphinx restart #重启

service sphinx status #查看是否运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于javaweb宠物领养平台管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

mysql 事务sqlserver_SQLServer数据库:事务与隔离级别实例讲解

本文主要向大家介绍了SQLServer数据库&#xff1a;事务与隔离级别实例讲解&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习SQLServer数据库有所帮助。上班途中&#xff0c;你在一处ATM机前停了下来。正当你在敲入密码的时候&#xff0c;你的一位家人也正在镇上…

基于 java springboot+mybatis二手物品网站系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…

AndroidStudio无法新建Java工程解决办法

我用的 AS 版本是 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 以往新建工程都是 New project >> Empty Activity &#xff0c; 有个选择 Java 还是 Kotlin 语言的选项&#xff0c; 之后会默认生成一个 MainActi…

JAVA 从菜鸟成长为大牛的必经之路

在程序界流行着一种默认的说法叫“黄金5年”&#xff0c;也就是一个程序员从入职的时候算起&#xff0c;前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向&#xff0c;如何走好这5年&#xff0c;彻底从一个刚入行的菜鸟蜕变成可以以不变应万变的职业大牛&#xf…

java set排序_Java Set排序的方法

Java Set排序的方法Set中TreeSet 本身就是有序的元素&#xff0c;那么下面重点介绍下HashSet的2种排序方法。1. 把HashSet保存在ArrayList里&#xff0c;再用Collections.sort()方法比较private void doSort(){final HashSet va new HashSet();va.add(2007111315);va.add(2007…

基于java springmvc+mybatis酒水商城管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

java date 一个月_java中的日期加一个月的计算

Homepage URLhttp://flysky-1.at.vwdhosting.netFTP server name:ftp://flysky-1ftp6.vwdhosting.net Login:flysky-1Password:k%x5WY(0zp? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛&#xff0c;《程序员》杂志就是他们出版的&#xff0c;你可以在上面提出问题&a…

基于java springboot+mybatis爱游旅行平台前台+后台设计实现

我剑最帅 不接受反驳 ​ 项目意义&#xff1a; 改革开放以来&#xff0c; 我国的旅游业发展迅速&#xff0c;但比较而言&#xff0c;我国旅游业发展的广度和深度都远远不能满足经济发展和人民生活水平提高的需要。 随着市场经济的发展和人民收入水平的进一步提高&#xff0c…

java多线程中出现的异常分别有哪些_java多线程试题

承Thread类4.线程的高度是指在单个CPU上以某种顺序运行多个线程5.多个线程并发执行时&#xff0c;各个线程中语句的执行顺序是确定的&#xff0c;但是线程之间的相对执行顺序是不确定的6.Java中的对象锁是一种独占的排他锁7.程序中可能出现一种情况&#xff1a;多个纯种互相等待…

《零基础》MySQL 超级入门教程

老规矩 先上镇楼图 MySQL简介 1、什么是数据库 &#xff1f; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c;它产生于距今六十多年前&#xff0c;随着信息技术和市场的发展&#xff0c;特别是二十世纪九十年代以后&#xff…

《零基础》MySQL 连接(四)

使用mysql二进制方式连接 实例 以下是从命令行中连接mysql服务器的简单实例&#xff1a; [roothost]# mysql -u root -p Enter password:****** 在登录成功后会出现 mysql> 命令提示窗口&#xff0c;你可以在上面执行任何 SQL 语句。 以上命令执行后&#xff0c;登录成…

java jbutton 禁用_java-禁用后对jButton执行的操作

我有使用Swing的示例代码.package playerlist;import java.awt.FlowLayout;import javax.swing.*;import java.awt.event.*;public class Sample extends JFrame{private JButton button1;private JButton button2;public Sample(){super();setTitle("Sample JFrame"…

《零基础》MySQL 创建数据库(五)

我们可以在登陆 MySQL 服务后&#xff0c;使用 create 命令创建数据库&#xff0c;语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程&#xff0c;数据名为 RUNOOB: [roothost]# mysql -u root -p Enter password:****** # 登录后进入终端mysq…

bootstarp js设置列隐藏_Bootstrap框架----DataTables列表移动端适配定义隐藏列

我们在上一章节中已经学习了DataTables在BootStrap框架中的使用方式和初始化。Bootstrap框架—-DataTables列表示例最终效果如图:Bootstrap是自动适配移动端的&#xff0c;在手机上查看效果如图&#xff1a;我们发现当数据有很多列时&#xff0c;会存在超出屏幕的可能。这时候表…

《零基础》MySQL 删除数据库(六)

使用普通用户登陆 MySQL 服务器&#xff0c;你可能需要特定的权限来创建或者删除 MySQL 数据库&#xff0c;所以我们这边使用 root 用户登录&#xff0c;root 用户拥有最高权限。 在删除数据库过程中&#xff0c;务必要十分谨慎&#xff0c;因为在执行删除命令后&#xff0c;所…

《零基础》MySQL 选择数据库(七)

在你连接到 MySQL 数据库后&#xff0c;可能有多个可以操作的数据库&#xff0c;所以你需要选择你要操作的数据库。 从命令提示窗口中选择MySQL数据库 在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。 实例 以下实例选取了数据…

java biginteger 运算_Java大数字运算之BigInteger 原创

在 Java中&#xff0c;有许多数字处理的类&#xff0c;比如Integer 类。但是Integer 类有一定的局限性&#xff0c;下面我们就来看看比 Integer 类更厉害的一个&#xff0c;BigInteger类。BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。我们都知道 Integer 是 I…

《零基础》MySQL 数据类型(八)

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型&#xff0c;大致可以分为三类&#xff1a;数值、日期/时间和字符串(字符)类型。 数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUM…

java线程生命周期_详解java线程的生命周期

详解java线程的生命周期与人有生老病死一样&#xff0c;线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。下面百分网小编主要介绍了java 线程的生命周期详解的相关资料&#xff0c;有需要的朋友可以参考!想了解更多相关信息请持续关注我们应届毕业生考试网!一个线…