- 浏览: 544762 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 860原文地址:http://blog.csdn.net/ljunc ... -
amoeba实现mysql读写分离
2015-11-25 11:29 523原文地址:http://coolnull.com/1463.h ... -
Mysql繁忙主从库在线修改表结构与添加索引问题
2015-11-19 11:01 1428原文地址:http://www.itpub.net/threa ... -
mysql 主从复制双主架构在线修改表结构、在线DDL
2015-11-19 10:59 1038原文地址:http://blog.csdn.net/clh60 ... -
高性能Mysql主从架构的复制原理及配置详解
2015-11-19 10:09 798原文地址:http://blog.csdn ... -
MySQ索引操作命令总结(创建、重建、查询和删除索引命令详解)
2015-11-18 18:13 578原文地址:http://www.shangxueba.com/ ... -
数据库性能优化一:数据库自身优化
2015-11-12 15:57 452原文地址:http://www.cnblo ... -
mysql在一个表中存储创建时间和最近更新时间
2015-10-26 15:10 1071原文地址:http://blog.sina.com.cn/s/ ... -
Mysql 如何设置字段自动获取当前时间
2015-10-26 15:07 997原文地址:http://www.cnblogs.com/lhj ... -
MySQL的create table as 与 like区别
2015-04-30 10:05 645原文地址:http://blog.csdn.net/longy ... -
Mysql 慢查询和慢查询日志分析
2015-04-21 12:01 621原文地址:http://www.cnblogs.com/wrm ... -
linux下mysql的root密码忘记解决方
2015-04-20 15:58 534原文地址:http://www.cnblogs.com/all ... -
【PHP征文】php 使用 sphinx 实现实时 innodb 全文索引
2015-04-20 10:51 1488原文地址:http://cloudbbs.org/forum. ... -
sphinx mysql innodb 联表数据源配置
2015-04-20 10:48 856原文地址:http://blog.phpdr.net/sphi ... -
mysql垂直分区和水平分区
2015-04-20 10:38 541原文地址:http://itsoul.iteye.com/bl ... -
MySQL隔离级别
2015-04-13 11:53 482原文地址:http://blog.csdn.net/taylo ... -
jdbc---隔离级别
2015-03-26 17:27 498原文地址“http://z466459262.iteye.co ... -
数据库事务隔离级别
2015-03-26 17:10 456原文地址:http://blog.csdn.net/fg200 ... -
JDBC事务隔离级别
2015-03-26 14:04 504原文地址:http://blog.csdn ... -
mysql开发者sql权威指南
2015-03-19 15:43 355原文地址:http://www.r20.nl/SQLforMy ...
相关推荐
Discuz官方出品,搭建Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词搜索引擎架构.doc
登录账户是amovlab2019密码是***********登录之后可以看到有四个项目,我们与GitHub相关联的是第一个Amov-wiki进入之后点击编译,等
用Sphinx搭建MySQL中文全文搜索 包含SpinxSE引擎/配置附件及sql文件. 压缩包密码:20100525
本文档介绍Sphinx4在Windows下的中文训练过程及注意事项,与本文档配套的是我自己的训练实例bergtrain和用到的软件。 本文档编写日期 2013-04-23 1、为什么要训练? sphinx4目前的版本中仅提供了英文等语音识别库。...
sphinx系统是一个拥有悠久历史的语音识别系统,李开复自称第一个sphinx是他写的。 传说 中是第一个实用的10数字语音系统。 是由卡奈基.美隆大学研发。 sphinx3.x是基于C语言的最新版本,sphinx和 sphinx2请大家...
Sphinx Docker映像 的Docker映像,这是用Python编写的文档工具。 支持的标签和相应的Dockerfile链接 1.7.1 , latest ( ) 1.7.1-latex , latex ( ) 什么是狮身人面像? 是一种工具,可轻松创建智能且美观的...
Sphinx JAVA接口 Sphinx JAVAAPI
Sphinx搜索引擎说明&&搭建详细文档
Sphinx-完整中文手册 Sphinx-完整中文手册 Sphinx-完整中文手册
node-pocketsphinx, node.js的Pocketsphinx绑定 用于 Node.js的 PocketSphinx这里 MODULE 旨在通过使用PocketSphinx在便携设备上实现基本语音识别。安装Windows 安装尚不支持。要构建这里 MODULE,你需要具有以下...
Sphinx overview Sphinx is an open-source full-text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. Sphinx lets you ...
sphinx资源安装包
Sphinx中文手册 sphinx的安装与使用技巧
sphinx4需要使用连续的声学模型,官网上下载下来的中文声学模型全是半连续的,这里提供能够在sphinx4中使用的中文声学模型
sphinx Linux 中文分词
php7中sphinx扩展,包含coreseek源码,用于安装libsphinxclient来解决libsphinxclient报错问题。
全文检索sphinx支持discuz包,好东西,请大家下载
sphinx 1.3.4 .