- 浏览: 564357 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
原文地址:http://blog.csdn.net/uestc_huan/article/details/6562763
手把手搭建sphinx 环境 1
一.概述 1
二.虚拟机的搭建 2
1. 安装 virtualbox 2
2. 准备 suse 的安装环境 2
3. 安装 suse 4
4. 配置共享文件夹 5
5. 设置网络 7
三.Mysql 的安装 8
1. 获取 mysql 源代码 8
2. 获取 sphinx 源码 9
3. 增加 sphinxSE 引擎 9
4. 配置编译 9
5. 启动和测试 9
6. 系统自动启动 mysql 10
四.Sphinx 的搭建 10
1. 解压 coreseek 10
2. 首先安装MMSeg: 10
3. 安装 coreseek 10
4. 配置自动启动 11
五.测试 11
1. 创建数据库 11
2. 创建 sphinx 引擎表格 12
3. 创建 sphinx 配置文件 13
4. 建立索引 19
5. 运行 sphinx 服务器 19
6.查询测试 19
六. 进一步参考 19
一.概述
Sphinx是一个在 GPLv2 下分发的全文检索引擎; Coreseek 是一个可供企业使用的、基于 Sphinx (可独立于 Sphinx 原始版本运行)的中文全文检索引擎,按照 GPLv2 协议发行。
一般而言,Sphinx 是一个独立的全文搜索引擎;而 Coreseek 是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的中文全文搜索能力。 Sphinx/Coreseek 可以非常容易的与 SQL 数据库和脚本语言集成。
本文介绍的是基于window XP 下的虚拟机环境搭建 sphinx 测试环境。使用的各软件版本如下,其他版本如有区别,请参考其他文献或代码。
coreseek-4.0.1-beta.tar.gz
VirtualBox-3.2.10-66523-Win.exe
mysql-5.1.56.tar.gz
openSUSE-11.3-DVD-i586.iso
二.虚拟机的搭建
1. 安装 virtualbox
双击,一路选择next 即可。
2. 准备 suse 的安装环境
(1 )新建一个虚拟机
(之前我建立了一个 opensuse 的虚拟机,这次建一个叫做 suse 的虚拟机。 )
(2) 创建一个新的虚拟硬盘
(3) 选择磁盘空间分配方式
(4) 分配磁盘空间大小
磁盘空间大小,建议不要小于15G 空间,建议使用 20G 或者以上。以备后期使用。
3. 安装 suse
(1 )用虚拟光驱加载 openSUSE-11.3-DVD-i586.iso ,
(2 )启动刚才建立的虚拟机
(3)安装 suse
跟正常安装linux 一样安装 suse 。
注意一点就是选择需要安装的软件。建议把开发软件全装上吧。根目录的空间分配要大一些。以备后面开发使用,免得来回折腾安装缺失的软件。下图就是选择需要安装软件的界面截图。
4. 配置共享文件夹
共享文件夹用于在虚拟机suse 上和宿主机 windowXP 之间共享传递文件,两个操作系统都能看见这个共享目录下的文件。
(1 )在 virtualbox 配置共享文件夹
在宿主机window xp 下创建共享目录 D:/share 。
关闭suse ,在 virtualBox 选择 suse, 右键选择设置 -> 数据空间 -> 固定分配, 选择共享目录 D:/share 。
(2) 修改 virtualbox的光驱配置
启动suse ,在菜单 " 设备 " — >" 分配光驱 " 中,选择 VBoxGuestAddiitions.iso 。
(3)在虚拟机上安装 virtualbox 增强工具
重启suse, 在主菜单中选择 computer, 挂载 VBOXADDITIONS_3.0.12_54655 。
cd /media, 可以看到 VBOXADDITIONS_3.0.12_54655 增强软件包的光盘。
用root 运行 VBoxLinuxAdditions-x86.run
重启
(3)在虚拟机上加载共享文件夹
mkdir /mnt/share; mount -t vboxsf share /mnt/share, 这个时候就可以看到共享文件夹了。
suse可以在 /etc/init.d/boot.local 中添加 /bin/mount -t vboxsf share /mnt/share 让它启动时候自动加载。
但在/etc/fstab 中添加没有用,因为系统调用 fstab 的时候, Virtualbox 的共享目录的模块还没有加载,每次加载都会失败。
5. 设置网络
打开虚拟机suse 的浏览器,设置浏览器的网络链接代理,因为公司必须使用网络代理才能上网,所以必须设置。设置网络浏览器使用脚本 http://txp-01.tencent.com/lvsproxy.pac 。这个时候就可以正常上网了。
三.Mysql 的安装
1. 获取 mysql 源代码
直接在虚拟机上上网下载也可以,或者将window xp 中下载的 mysql-5.1.56.tar.gz 拷贝到共享目录中 (D:/share) ,然后在虚拟机上的共享目录 (/mnt/share )目录下,拷贝到你的目录(假如为 /home/software )中。
用tar xvfz mysql-5.1.56.tar.gz 解压。
2. 获取 sphinx 源码
跟获取mysql 类似。解压在 /home/software 目录下。之所以在这里预先获取 sphinx 的源码,是因为想给 mysql 预先建立 sphinxSE 的引擎。
Tar xvfz coreseek-4.0.1-beta.tar.gz
3. 增加 sphinxSE 引擎
将coreseek-xxx/csft-xxx/mysqlse 目录下的文件拷贝到 mysql/storage/sphinx 目录下。
cp -r /home/software/coreseek-4.0.1-beta/csft-4.0.1/mysqlse /home/software/mysql-5.1.56/storage/sphinx
4. 配置编译
依次执行下面命令
sh BUILD/autorun.sh
Mkdir -p /home/sphinx/var/data
mkdir -p /var/log/mysql
mkdir -p /var/lib/mysql
mkdir -p /var/run/mysql
./configure --with-plugins=all --prefix=/usr/local/mysql5.1.56/ --with-charset= gbk --localstatedir=/ home/sphinx/var/data
Make
Make install
(1)关于上面几个目录的说明:
/var/下面的几个目录,是因为 /etc/my.cfg 里面设置的几个目录。你可以根据自己需要去修改 my.cfg 的路径,或者干脆就自己建立这几个目录让 mysql 使用,而不去修改 my.cfg 文件。
(2)关于 configure 的配置选项的说明:
--localstatdir是用来避免权限问题,其他选项 分别支持innodb 和 sphinx 驱动,同时跟 os 自带的 mysql 分开,支持 gbk 编码。自己可以根据需要适当修改。
5. 启动和测试
/usr/local/mysql5.1.56/bin/mysqld_safe &
连接命令:
Mysql
show engines; 检查是否有 sphinx 引擎。
如果启动mysql 有问题,可以用下面命令手动启动,检查对应的错误日志,根据错误日志定位问题。有一个常见的问题,是之前系统安装的时候自动安装了 mysql ,新安装的 mysql 两者有冲突,导致某些表不在配置文件的路径下,报找不到数据表的错误。如果这个错误,可以在用 /usr/local/mysql-5.1.56/bin/mysql_install_db 命令重建缺省的数据库。
/usr/local/mysql5.1.56/libexec/mysqld --basedir=/usr/local/mysql5.1.56 --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/lib/mysql/linux-6ky2.pid --socket=/var/run/mysql/mysql.sock --port=3306
其他可能错误请自行google.
6. 系统自动启动 mysql
在/etc/rc.d/boot.local 中加入 mysql 的启动。加入下面一行。
/usr/local/mysql5.1.56/libexec/mysqld --basedir=/usr/local/mysql5.1.56 --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/lib/mysql/linux-6ky2.pid --socket=/var/run/mysql/mysql.sock --port=3306 &
注意如果boot.local 启动错误,有可能导致系统启动不起来。这点很恶心。如果发生这种错误,就用安装盘,从安装盘进入 rescue 模式,然后用 fdisk -l 查看你的硬盘的分区号,这里假定是 /dev/sda2. 用命令 mount /dev/sda2 /mnt/ 挂载,然后 vi /mnt/etc/rc.d/boot.local 进行修改。
四.Sphinx 的搭建
1. 解压 coreseek
如果在安装 mysql已经解压了,直接进入解压以后的目录即可。
$ tar xzvf coreseek-3.2.14.tar.gz
$ cd coreseek
2. 首先安装MMSeg:
在 mmseg的目录下 依次运行下面命令
libtoolize --force
aclocal
automake --add-missing
autoconf
autoheader
make clean
./configure
Make
Make install
3. 安装 coreseek
$ ./configure
configure程序有很多运行选项。完整的列表可以通过使用 --help 开关得到。最重要的如下:
· --prefix, 定义将 Coreseek 安装到何处 ; 比如 --prefix=/usr/local/coreseek ( 以下全部示例都假定 Coreseek 安装在这个位置 )
· --with-mysql, 当自动检测失败时,指出在那里能找到 MySQL 头文件和库文件 ;
· --with-pgsql, 指出在那里能找到 PostgreSQL 头文件和库文件 .
· --with-mmseg, 启用基于 MMSeg 的中文分词法,并指出在那里能找到 MMSeg 头文件和库文件 .
· --with-python, 启用 Python 数据源支持 . 需要预先安装 Python2.6.
编译源代码生成二进制程序:
$ make
安装二进制程序到你设定的目录下: ( 类 Unix 操作系统下默认为 /usr/local/bin/ , 但是可以被 configure --prefix) 修改安装目录
$ make install
4. 配置自动启动
在/etc/rc.d/boot.local 中加入 searchd 的开机启动。
/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/csft_mysql.conf
五.测试
1. 创建数据库
Mysql登陆数据库以后,创建 db 和 schema 。
假如db 是 dbname , schema 如下:
CREATE TABLE t_sns_share_info_0000
(
ID BIGINT UNSIGNED NOT NULL,
FShareId BIGINT UNSIGNED NOT NULL DEFAULT 0,
FUin INTEGER UNSIGNED NOT NULL DEFAULT 0,
FPostTime INTEGER UNSIGNED DEFAULT 0,
FSource INTEGER,
FPostType INTEGER NOT NULL,
FContent VARCHAR(512) NOT NULL DEFAULT '',
FComment VARCHAR(512) DEFAULT '',
FShareType INTEGER NOT NULL,
FOperate INTEGER DEFAULT 0,
FShopId INTEGER DEFAULT 0,
FShopName VARCHAR(255) DEFAULT '',
PRIMARY KEY sid (ID),
UNIQUE KEY shareid(FShareId)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;;
插入两条测试数据:
insert into t_sns_share_info_0000 values(xxxxxx);
insert into t_sns_share_info_0000 values(xxxxxxx);
2. 创建 sphinx 引擎表格
CREATE TABLE t_shareinfo_sphinxSE
(
id bigint unsigned UNSIGNED NOT NULL,
weight INTEGER default 1,
query VARCHAR(3072) NOT NULL,
FUin INTEGER UNSIGNED default 0,
FPostTime INTEGER UNSIGNED default 0,
FShareType INTEGER default 0,
FShopId INTEGER DEFAULT 0,
INDEX(query)
) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312";
3. 创建 sphinx 配置文件
缺省的配置文件路径在/usr/local/coreseek/etc 目录下。在下面建立(如果没有)或者修改(如果已经存在)文件 /usr/local/coreseek/etc/csft_mysql.conf 。内容如下:
source t_sns_share_info_0000
{
type = mysql
sql_host = 10.xx.xx.xx
sql_user = dbuser
sql_pass = dbpasswd
sql_db = dbname
sql_port = 3306
sql_sock = /xxx/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query = SELECT ID, FShareId, FUin, FPostTime, FSource,FPostType,FContent,FComment,FShareType,FOperate,FShopId,FshopName FROM t_sns_share_info_0000
sql_attr_uint = FUin
sql_attr_uint = FShareId
sql_attr_uint = FPostTime
sql_attr_uint = FSource
sql_attr_uint = FPostType
sql_attr_uint = FShareType
sql_attr_uint = FShopId
}
index t_sns_share_info_0
{
source = t_sns_share_info_0000
path = /usr/local/coreseek/var/data/t_sns_share_info_0_0
docinfo = extern
mlock = 0
morphology = none
exceptions = /usr/local/coreseek/var/exceptions.txt
min_word_len = 1
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/coreseek/dict
ngram_len = 0
ngram_chars = U+3000..U+2FA1F
html_strip = 0
}
#############################################################################
## indexer settings
#############################################################################
indexer
{
# memory limit, in bytes, kiloytes (16384K) or megabytes (256M)
# optional, default is 32M, max is 2047M, recommended is 256M to 1024M
mem_limit = 40M
# maximum IO calls per second (for I/O throttling)
# optional, default is 0 (unlimited)
#
# max_iops = 40
# maximum IO call size, bytes (for I/O throttling)
# optional, default is 0 (unlimited)
#
# max_iosize = 1048576
# maximum xmlpipe2 field length, bytes
# optional, default is 2M
#
# max_xmlpipe2_field = 4M
# write buffer size, bytes
# several (currently up to 4) buffers will be allocated
# write buffers are allocated in addition to mem_limit
# optional, default is 1M
#
write_buffer = 1M
}
#############################################################################
## searchd settings
#############################################################################
searchd
{
# hostname, port, or hostname:port, or /unix/socket/path to listen on
# multi-value, multiple listen points are allowed
# optional, default is 0.0.0.0:9312 (listen on all interfaces, port 9312)
#
# listen = 127.0.0.1
# listen = 192.168.0.1:9312
listen = 9312
# listen = /var/run/searchd.sock
# log file, searchd run info is logged here
# optional, default is 'searchd.log'
log = /usr/local/coreseek/var/log/searchd_t_sns_share_info_0.log
# query log file, all search queries are logged here
# optional, default is empty (do not log queries)
query_log = /usr/local/coreseek/var/log/query_t_sns_share_info_0.log
# client read timeout, seconds
# optional, default is 5
read_timeout = 5
# request timeout, seconds
# optional, default is 5 minutes
client_timeout = 300
# maximum amount of children to fork (concurrent searches to run)
# optional, default is 0 (unlimited)
max_children = 30
# PID file, searchd process ID file name
# mandatory
pid_file = /usr/local/coreseek/var/log/searchd_9312.pid
# max amount of matches the daemon ever keeps in RAM, per-index
# WARNING, THERE'S ALSO PER-QUERY LIMIT, SEE SetLimits() API CALL
# default is 1000 (just like Google)
max_matches = 1000000
# seamless rotate, prevents rotate stalls if precaching huge datasets
# optional, default is 1
seamless_rotate = 1
# whether to forcibly preopen all indexes on startup
# optional, default is 0 (do not preopen)
preopen_indexes = 0
# whether to unlink .old index copies on succesful rotation.
# optional, default is 1 (do unlink)
unlink_old = 1
# attribute updates periodic flush timeout, seconds
# updates will be automatically dumped to disk this frequently
# optional, default is 0 (disable periodic flush)
#
# attr_flush_period = 900
# instance-wide ondisk_dict defaults (per-index value take precedence)
# optional, default is 0 (precache all dictionaries in RAM)
#
# ondisk_dict_default = 1
# MVA updates pool size
# shared between all instances of searchd, disables attr flushes!
# optional, default size is 1M
mva_updates_pool = 1M
# max allowed network packet size
# limits both query packets from clients, and responses from agents
# optional, default size is 8M
max_packet_size = 8M
# crash log path
# searchd will (try to) log crashed query to 'crash_log_path.PID' file
# optional, default is empty (do not create crash logs)
#
# crash_log_path = /usr/local/coreseek/var/log/crash
# max allowed per-query filter count
# optional, default is 256
max_filters = 256
# max allowed per-filter values count
# optional, default is 4096
max_filter_values = 4096
# socket listen queue length
# optional, default is 5
#
# listen_backlog = 5
# per-keyword read buffer size
# optional, default is 256K
#
# read_buffer = 256K
# unhinted read size (currently used when reading hits)
# optional, default is 32K
#
# read_unhinted = 32K
}
# --eof--
4. 建立索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all
这个命令会根据配置文件/usr/local/coreseek/etc/csft_mysql.conf 生成对应的索引文件。
5. 运行 sphinx 服务器
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf
启动服务。
6.查询测试
可以通过sphinxSE 进行查询测试。
在mysql 中运行命令 Select * from t_shareinfo_sphinxSE where query="product"; 即可查看查询的结果。更多 sphinxSE 支持的语句请参考手册。
六. 进一步参考
当你走到这一步的时候,恭喜你,完成了sphinx 环境的搭建。
更多的知识,请参考coreseek 和 sphinx 的手册。
http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html
http://www.coreseek.cn/docs/sphinx-1.11-beta.html
多操作,多实践是掌握sphinx 的最快方法。
手把手搭建sphinx 环境 1
一.概述 1
二.虚拟机的搭建 2
1. 安装 virtualbox 2
2. 准备 suse 的安装环境 2
3. 安装 suse 4
4. 配置共享文件夹 5
5. 设置网络 7
三.Mysql 的安装 8
1. 获取 mysql 源代码 8
2. 获取 sphinx 源码 9
3. 增加 sphinxSE 引擎 9
4. 配置编译 9
5. 启动和测试 9
6. 系统自动启动 mysql 10
四.Sphinx 的搭建 10
1. 解压 coreseek 10
2. 首先安装MMSeg: 10
3. 安装 coreseek 10
4. 配置自动启动 11
五.测试 11
1. 创建数据库 11
2. 创建 sphinx 引擎表格 12
3. 创建 sphinx 配置文件 13
4. 建立索引 19
5. 运行 sphinx 服务器 19
6.查询测试 19
六. 进一步参考 19
一.概述
Sphinx是一个在 GPLv2 下分发的全文检索引擎; Coreseek 是一个可供企业使用的、基于 Sphinx (可独立于 Sphinx 原始版本运行)的中文全文检索引擎,按照 GPLv2 协议发行。
一般而言,Sphinx 是一个独立的全文搜索引擎;而 Coreseek 是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的中文全文搜索能力。 Sphinx/Coreseek 可以非常容易的与 SQL 数据库和脚本语言集成。
本文介绍的是基于window XP 下的虚拟机环境搭建 sphinx 测试环境。使用的各软件版本如下,其他版本如有区别,请参考其他文献或代码。
coreseek-4.0.1-beta.tar.gz
VirtualBox-3.2.10-66523-Win.exe
mysql-5.1.56.tar.gz
openSUSE-11.3-DVD-i586.iso
二.虚拟机的搭建
1. 安装 virtualbox
双击,一路选择next 即可。
2. 准备 suse 的安装环境
(1 )新建一个虚拟机
(之前我建立了一个 opensuse 的虚拟机,这次建一个叫做 suse 的虚拟机。 )
(2) 创建一个新的虚拟硬盘
(3) 选择磁盘空间分配方式
(4) 分配磁盘空间大小
磁盘空间大小,建议不要小于15G 空间,建议使用 20G 或者以上。以备后期使用。
3. 安装 suse
(1 )用虚拟光驱加载 openSUSE-11.3-DVD-i586.iso ,
(2 )启动刚才建立的虚拟机
(3)安装 suse
跟正常安装linux 一样安装 suse 。
注意一点就是选择需要安装的软件。建议把开发软件全装上吧。根目录的空间分配要大一些。以备后面开发使用,免得来回折腾安装缺失的软件。下图就是选择需要安装软件的界面截图。
4. 配置共享文件夹
共享文件夹用于在虚拟机suse 上和宿主机 windowXP 之间共享传递文件,两个操作系统都能看见这个共享目录下的文件。
(1 )在 virtualbox 配置共享文件夹
在宿主机window xp 下创建共享目录 D:/share 。
关闭suse ,在 virtualBox 选择 suse, 右键选择设置 -> 数据空间 -> 固定分配, 选择共享目录 D:/share 。
(2) 修改 virtualbox的光驱配置
启动suse ,在菜单 " 设备 " — >" 分配光驱 " 中,选择 VBoxGuestAddiitions.iso 。
(3)在虚拟机上安装 virtualbox 增强工具
重启suse, 在主菜单中选择 computer, 挂载 VBOXADDITIONS_3.0.12_54655 。
cd /media, 可以看到 VBOXADDITIONS_3.0.12_54655 增强软件包的光盘。
用root 运行 VBoxLinuxAdditions-x86.run
重启
(3)在虚拟机上加载共享文件夹
mkdir /mnt/share; mount -t vboxsf share /mnt/share, 这个时候就可以看到共享文件夹了。
suse可以在 /etc/init.d/boot.local 中添加 /bin/mount -t vboxsf share /mnt/share 让它启动时候自动加载。
但在/etc/fstab 中添加没有用,因为系统调用 fstab 的时候, Virtualbox 的共享目录的模块还没有加载,每次加载都会失败。
5. 设置网络
打开虚拟机suse 的浏览器,设置浏览器的网络链接代理,因为公司必须使用网络代理才能上网,所以必须设置。设置网络浏览器使用脚本 http://txp-01.tencent.com/lvsproxy.pac 。这个时候就可以正常上网了。
三.Mysql 的安装
1. 获取 mysql 源代码
直接在虚拟机上上网下载也可以,或者将window xp 中下载的 mysql-5.1.56.tar.gz 拷贝到共享目录中 (D:/share) ,然后在虚拟机上的共享目录 (/mnt/share )目录下,拷贝到你的目录(假如为 /home/software )中。
用tar xvfz mysql-5.1.56.tar.gz 解压。
2. 获取 sphinx 源码
跟获取mysql 类似。解压在 /home/software 目录下。之所以在这里预先获取 sphinx 的源码,是因为想给 mysql 预先建立 sphinxSE 的引擎。
Tar xvfz coreseek-4.0.1-beta.tar.gz
3. 增加 sphinxSE 引擎
将coreseek-xxx/csft-xxx/mysqlse 目录下的文件拷贝到 mysql/storage/sphinx 目录下。
cp -r /home/software/coreseek-4.0.1-beta/csft-4.0.1/mysqlse /home/software/mysql-5.1.56/storage/sphinx
4. 配置编译
依次执行下面命令
sh BUILD/autorun.sh
Mkdir -p /home/sphinx/var/data
mkdir -p /var/log/mysql
mkdir -p /var/lib/mysql
mkdir -p /var/run/mysql
./configure --with-plugins=all --prefix=/usr/local/mysql5.1.56/ --with-charset= gbk --localstatedir=/ home/sphinx/var/data
Make
Make install
(1)关于上面几个目录的说明:
/var/下面的几个目录,是因为 /etc/my.cfg 里面设置的几个目录。你可以根据自己需要去修改 my.cfg 的路径,或者干脆就自己建立这几个目录让 mysql 使用,而不去修改 my.cfg 文件。
(2)关于 configure 的配置选项的说明:
--localstatdir是用来避免权限问题,其他选项 分别支持innodb 和 sphinx 驱动,同时跟 os 自带的 mysql 分开,支持 gbk 编码。自己可以根据需要适当修改。
5. 启动和测试
/usr/local/mysql5.1.56/bin/mysqld_safe &
连接命令:
Mysql
show engines; 检查是否有 sphinx 引擎。
如果启动mysql 有问题,可以用下面命令手动启动,检查对应的错误日志,根据错误日志定位问题。有一个常见的问题,是之前系统安装的时候自动安装了 mysql ,新安装的 mysql 两者有冲突,导致某些表不在配置文件的路径下,报找不到数据表的错误。如果这个错误,可以在用 /usr/local/mysql-5.1.56/bin/mysql_install_db 命令重建缺省的数据库。
/usr/local/mysql5.1.56/libexec/mysqld --basedir=/usr/local/mysql5.1.56 --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/lib/mysql/linux-6ky2.pid --socket=/var/run/mysql/mysql.sock --port=3306
其他可能错误请自行google.
6. 系统自动启动 mysql
在/etc/rc.d/boot.local 中加入 mysql 的启动。加入下面一行。
/usr/local/mysql5.1.56/libexec/mysqld --basedir=/usr/local/mysql5.1.56 --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/lib/mysql/linux-6ky2.pid --socket=/var/run/mysql/mysql.sock --port=3306 &
注意如果boot.local 启动错误,有可能导致系统启动不起来。这点很恶心。如果发生这种错误,就用安装盘,从安装盘进入 rescue 模式,然后用 fdisk -l 查看你的硬盘的分区号,这里假定是 /dev/sda2. 用命令 mount /dev/sda2 /mnt/ 挂载,然后 vi /mnt/etc/rc.d/boot.local 进行修改。
四.Sphinx 的搭建
1. 解压 coreseek
如果在安装 mysql已经解压了,直接进入解压以后的目录即可。
$ tar xzvf coreseek-3.2.14.tar.gz
$ cd coreseek
2. 首先安装MMSeg:
在 mmseg的目录下 依次运行下面命令
libtoolize --force
aclocal
automake --add-missing
autoconf
autoheader
make clean
./configure
Make
Make install
3. 安装 coreseek
$ ./configure
configure程序有很多运行选项。完整的列表可以通过使用 --help 开关得到。最重要的如下:
· --prefix, 定义将 Coreseek 安装到何处 ; 比如 --prefix=/usr/local/coreseek ( 以下全部示例都假定 Coreseek 安装在这个位置 )
· --with-mysql, 当自动检测失败时,指出在那里能找到 MySQL 头文件和库文件 ;
· --with-pgsql, 指出在那里能找到 PostgreSQL 头文件和库文件 .
· --with-mmseg, 启用基于 MMSeg 的中文分词法,并指出在那里能找到 MMSeg 头文件和库文件 .
· --with-python, 启用 Python 数据源支持 . 需要预先安装 Python2.6.
编译源代码生成二进制程序:
$ make
安装二进制程序到你设定的目录下: ( 类 Unix 操作系统下默认为 /usr/local/bin/ , 但是可以被 configure --prefix) 修改安装目录
$ make install
4. 配置自动启动
在/etc/rc.d/boot.local 中加入 searchd 的开机启动。
/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/csft_mysql.conf
五.测试
1. 创建数据库
Mysql登陆数据库以后,创建 db 和 schema 。
假如db 是 dbname , schema 如下:
CREATE TABLE t_sns_share_info_0000
(
ID BIGINT UNSIGNED NOT NULL,
FShareId BIGINT UNSIGNED NOT NULL DEFAULT 0,
FUin INTEGER UNSIGNED NOT NULL DEFAULT 0,
FPostTime INTEGER UNSIGNED DEFAULT 0,
FSource INTEGER,
FPostType INTEGER NOT NULL,
FContent VARCHAR(512) NOT NULL DEFAULT '',
FComment VARCHAR(512) DEFAULT '',
FShareType INTEGER NOT NULL,
FOperate INTEGER DEFAULT 0,
FShopId INTEGER DEFAULT 0,
FShopName VARCHAR(255) DEFAULT '',
PRIMARY KEY sid (ID),
UNIQUE KEY shareid(FShareId)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;;
插入两条测试数据:
insert into t_sns_share_info_0000 values(xxxxxx);
insert into t_sns_share_info_0000 values(xxxxxxx);
2. 创建 sphinx 引擎表格
CREATE TABLE t_shareinfo_sphinxSE
(
id bigint unsigned UNSIGNED NOT NULL,
weight INTEGER default 1,
query VARCHAR(3072) NOT NULL,
FUin INTEGER UNSIGNED default 0,
FPostTime INTEGER UNSIGNED default 0,
FShareType INTEGER default 0,
FShopId INTEGER DEFAULT 0,
INDEX(query)
) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312";
3. 创建 sphinx 配置文件
缺省的配置文件路径在/usr/local/coreseek/etc 目录下。在下面建立(如果没有)或者修改(如果已经存在)文件 /usr/local/coreseek/etc/csft_mysql.conf 。内容如下:
source t_sns_share_info_0000
{
type = mysql
sql_host = 10.xx.xx.xx
sql_user = dbuser
sql_pass = dbpasswd
sql_db = dbname
sql_port = 3306
sql_sock = /xxx/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query = SELECT ID, FShareId, FUin, FPostTime, FSource,FPostType,FContent,FComment,FShareType,FOperate,FShopId,FshopName FROM t_sns_share_info_0000
sql_attr_uint = FUin
sql_attr_uint = FShareId
sql_attr_uint = FPostTime
sql_attr_uint = FSource
sql_attr_uint = FPostType
sql_attr_uint = FShareType
sql_attr_uint = FShopId
}
index t_sns_share_info_0
{
source = t_sns_share_info_0000
path = /usr/local/coreseek/var/data/t_sns_share_info_0_0
docinfo = extern
mlock = 0
morphology = none
exceptions = /usr/local/coreseek/var/exceptions.txt
min_word_len = 1
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/coreseek/dict
ngram_len = 0
ngram_chars = U+3000..U+2FA1F
html_strip = 0
}
#############################################################################
## indexer settings
#############################################################################
indexer
{
# memory limit, in bytes, kiloytes (16384K) or megabytes (256M)
# optional, default is 32M, max is 2047M, recommended is 256M to 1024M
mem_limit = 40M
# maximum IO calls per second (for I/O throttling)
# optional, default is 0 (unlimited)
#
# max_iops = 40
# maximum IO call size, bytes (for I/O throttling)
# optional, default is 0 (unlimited)
#
# max_iosize = 1048576
# maximum xmlpipe2 field length, bytes
# optional, default is 2M
#
# max_xmlpipe2_field = 4M
# write buffer size, bytes
# several (currently up to 4) buffers will be allocated
# write buffers are allocated in addition to mem_limit
# optional, default is 1M
#
write_buffer = 1M
}
#############################################################################
## searchd settings
#############################################################################
searchd
{
# hostname, port, or hostname:port, or /unix/socket/path to listen on
# multi-value, multiple listen points are allowed
# optional, default is 0.0.0.0:9312 (listen on all interfaces, port 9312)
#
# listen = 127.0.0.1
# listen = 192.168.0.1:9312
listen = 9312
# listen = /var/run/searchd.sock
# log file, searchd run info is logged here
# optional, default is 'searchd.log'
log = /usr/local/coreseek/var/log/searchd_t_sns_share_info_0.log
# query log file, all search queries are logged here
# optional, default is empty (do not log queries)
query_log = /usr/local/coreseek/var/log/query_t_sns_share_info_0.log
# client read timeout, seconds
# optional, default is 5
read_timeout = 5
# request timeout, seconds
# optional, default is 5 minutes
client_timeout = 300
# maximum amount of children to fork (concurrent searches to run)
# optional, default is 0 (unlimited)
max_children = 30
# PID file, searchd process ID file name
# mandatory
pid_file = /usr/local/coreseek/var/log/searchd_9312.pid
# max amount of matches the daemon ever keeps in RAM, per-index
# WARNING, THERE'S ALSO PER-QUERY LIMIT, SEE SetLimits() API CALL
# default is 1000 (just like Google)
max_matches = 1000000
# seamless rotate, prevents rotate stalls if precaching huge datasets
# optional, default is 1
seamless_rotate = 1
# whether to forcibly preopen all indexes on startup
# optional, default is 0 (do not preopen)
preopen_indexes = 0
# whether to unlink .old index copies on succesful rotation.
# optional, default is 1 (do unlink)
unlink_old = 1
# attribute updates periodic flush timeout, seconds
# updates will be automatically dumped to disk this frequently
# optional, default is 0 (disable periodic flush)
#
# attr_flush_period = 900
# instance-wide ondisk_dict defaults (per-index value take precedence)
# optional, default is 0 (precache all dictionaries in RAM)
#
# ondisk_dict_default = 1
# MVA updates pool size
# shared between all instances of searchd, disables attr flushes!
# optional, default size is 1M
mva_updates_pool = 1M
# max allowed network packet size
# limits both query packets from clients, and responses from agents
# optional, default size is 8M
max_packet_size = 8M
# crash log path
# searchd will (try to) log crashed query to 'crash_log_path.PID' file
# optional, default is empty (do not create crash logs)
#
# crash_log_path = /usr/local/coreseek/var/log/crash
# max allowed per-query filter count
# optional, default is 256
max_filters = 256
# max allowed per-filter values count
# optional, default is 4096
max_filter_values = 4096
# socket listen queue length
# optional, default is 5
#
# listen_backlog = 5
# per-keyword read buffer size
# optional, default is 256K
#
# read_buffer = 256K
# unhinted read size (currently used when reading hits)
# optional, default is 32K
#
# read_unhinted = 32K
}
# --eof--
4. 建立索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all
这个命令会根据配置文件/usr/local/coreseek/etc/csft_mysql.conf 生成对应的索引文件。
5. 运行 sphinx 服务器
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf
启动服务。
6.查询测试
可以通过sphinxSE 进行查询测试。
在mysql 中运行命令 Select * from t_shareinfo_sphinxSE where query="product"; 即可查看查询的结果。更多 sphinxSE 支持的语句请参考手册。
六. 进一步参考
当你走到这一步的时候,恭喜你,完成了sphinx 环境的搭建。
更多的知识,请参考coreseek 和 sphinx 的手册。
http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html
http://www.coreseek.cn/docs/sphinx-1.11-beta.html
多操作,多实践是掌握sphinx 的最快方法。
发表评论
-
使用amoeba 数据库端出现 ERROR 1044 (42000):
2015-11-25 11:29 889原文地址:http://blog.csdn.net/ljunc ... -
amoeba实现mysql读写分离
2015-11-25 11:29 561原文地址:http://coolnull.com/1463.h ... -
Mysql繁忙主从库在线修改表结构与添加索引问题
2015-11-19 11:01 1468原文地址:http://www.itpub.net/threa ... -
mysql 主从复制双主架构在线修改表结构、在线DDL
2015-11-19 10:59 1078原文地址:http://blog.csdn.net/clh60 ... -
高性能Mysql主从架构的复制原理及配置详解
2015-11-19 10:09 842原文地址:http://blog.csdn ... -
MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)
2015-11-18 18:13 613原文地址:http://www.shangxueba.com/ ... -
数据库性能优化一:数据库自身优化
2015-11-12 15:57 484原文地址:http://www.cnblo ... -
mysql在一个表中存储创建时间和最近更新时间
2015-10-26 15:10 1110原文地址:http://blog.sina.com.cn/s/ ... -
Mysql 如何设置字段自动获取当前时间
2015-10-26 15:07 1035原文地址:http://www.cnblogs.com/lhj ... -
MySQL的create table as 与 like区别
2015-04-30 10:05 682原文地址:http://blog.csdn.net/longy ... -
Mysql 慢查询和慢查询日志分析
2015-04-21 12:01 664原文地址:http://www.cnblogs.com/wrm ... -
linux下mysql的root密码忘记解决方
2015-04-20 15:58 574原文地址:http://www.cnblogs.com/all ... -
【PHP征文】php 使用 sphinx 实现实时 innodb 全文索引
2015-04-20 10:51 1530原文地址:http://cloudbbs.org/forum. ... -
sphinx mysql innodb 联表数据源配置
2015-04-20 10:48 889原文地址:http://blog.phpdr.net/sphi ... -
mysql垂直分区和水平分区
2015-04-20 10:38 576原文地址:http://itsoul.iteye.com/bl ... -
MySQL隔离级别
2015-04-13 11:53 515原文地址:http://blog.csdn.net/taylo ... -
jdbc---隔离级别
2015-03-26 17:27 536原文地址“http://z466459262.iteye.co ... -
数据库事务隔离级别
2015-03-26 17:10 487原文地址:http://blog.csdn.net/fg200 ... -
JDBC事务隔离级别
2015-03-26 14:04 543原文地址:http://blog.csdn ... -
mysql开发者sql权威指南
2015-03-19 15:43 396原文地址:http://www.r20.nl/SQLforMy ...
相关推荐
### 搭建Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词搜索引擎架构 #### Sphinx快速介绍 Sphinx是一款高性能的全文搜索引擎,它独立于MySQL运行,但可以与MySQL配合使用来实现高效的全文检索功能。当Sphinx与MySQL...
本文将详细介绍如何使用Sphinx搭建MySQL的中文全文搜索。 首先,Sphinx是一个开源的全文搜索引擎,它的设计目标是提供快速、准确、可扩展的全文检索能力。Sphinx支持多种数据库源,包括MySQL,能够与之紧密结合,...
【Sphinx-4的Java环境搭建】 在Java环境下使用Sphinx-4,首先需要下载并解压Sphinx-4的源代码包,然后通过构建工具如Maven或Gradle进行编译。确保你的开发环境中已安装Java JDK,并配置好环境变量。Sphinx-4的配置...
在提供的链接 http://www.cnblogs.com/strick/p/4173757.html 中,博主详细介绍了如何搭建 Sphinx 的环境以及进行基本的配置。这个教程主要分为以下几个部分: 1. **下载与安装**: - `coreseek-4.1-win32` 文件是...
3. 编译并安装扩展:运行`phpize`来配置编译环境,然后执行`./configure --with-sphinx=/path/to/sphinx`,最后使用`make && make install`完成编译和安装。 4. 更新PHP配置:将新安装的Sphinx扩展添加到php.ini文件...
总的来说,Sphinx结合CoreSeek提供了强大的中文全文搜索解决方案,而这个压缩包的使用将帮助你快速搭建和测试环境,节省了大量配置时间。在实际应用中,你可以根据业务需求调整Sphinx的配置,优化搜索性能,提升用户...
sphinx系统是一个拥有悠久历史的语音识别系统,李开复自称第一个sphinx是他写的。 传说 中是第一个实用的10数字语音系统。 是由卡奈基.美隆大学研发。 sphinx3.x是基于C语言的最新版本,sphinx和 sphinx2请大家...
使用这些文件,初学者可以在不在线生成模型的情况下,快速搭建Pocketsphinx环境并进行语音识别实验。通过修改和完善这些文件,我们可以调整识别系统的性能,例如增加词汇量、优化语言模型等,以适应不同的应用场景。...
10. **Windows版本**: "sphinx-0.9.9-rc2-win32"表明这是一个适用于Windows操作系统的Sphinx版本,这意味着即使在非Linux环境下,开发人员也能利用Sphinx构建强大的搜索引擎。 总之,Sphinx作为一款强大的数据库...
本文档介绍Sphinx4在Windows下的中文训练过程及注意事项,与本文档配套的是我自己的训练实例bergtrain和用到的软件。 本文档编写日期 2013-04-23 1、为什么要训练? sphinx4目前的版本中仅提供了英文等语音识别库。...
Pocketsphinx是由Carnegie Mellon University开发的开源语音识别引擎,它是CMU Sphinx的一部分,主要针对离线和低资源环境。Pocketsphinx以其轻量级和高效的特点,被广泛应用于嵌入式系统和移动设备中。它支持命令词...
为了更好地利用Sphinx,开发者需要掌握如何配置和搭建Sphinx服务器,这通常涉及以下步骤: 1. **安装Sphinx**:下载并安装Sphinx软件包,确保系统满足其依赖要求。 2. **配置Sphinx**:配置Sphinx的配置文件(通常...
2. **低资源需求**:Pocketsphinx设计时考虑了资源受限的环境,其内存占用和计算需求相对较低。 3. **多平台支持**:Pocketsphinx支持多种操作系统,包括Linux、Windows、Mac OS X以及Android和iOS。 4. **可定制...
描述中的链接是一个CSDN博客文章,虽然具体内容未给出,但可以推测该文章可能提供了详细的步骤、代码示例或者配置指南,教读者如何在Windows环境中设置并运行一个基于Pocketsphinx的中文语音识别示例。 **Pocket...
- 需要对Sphinx进行配置,指定使用"zh-CN"模型,并调整参数以适应不同环境和应用场景。 6. **挑战与优化**: - 中文语音识别的挑战包括方言识别、口音差异、噪声环境下的识别准确率等。 - 模型的训练和优化通常...
Java整合Sphinx主要涉及到的是在Java应用程序中使用Sphinx搜索引擎进行数据检索的技术。Sphinx是一款高性能、全文搜索引擎服务器,常用于构建实时的、基于全文的搜索功能。它提供了丰富的API和多种语言的客户端库,...
CMU Sphinx由卡内基梅隆大学(Carnegie Mellon University)开发,其设计目标是实现高效、准确的语音识别,特别适用于低资源计算环境。 在给定的压缩包文件中,包含了一个名为"mdef"的文件。这个文件是CMU Sphinx...
登录账户是amovlab2019密码是***********登录之后可以看到有四个项目,我们与GitHub相关联的是第一个Amov-wiki进入之后点击编译,等