由于现在低版本的5.6以前的版本,并不支持全文索引,直到5.6版本才支持全文索引(mysiam),但是对于中文网站来说,mysql还不支持基于中文的全文索引.但是通过使用sphinx可以解决中文的问题.
shpinx支持各种数据库 如mysql oracle等等其他数据库,shpinx本身不支持中文,但是可以使用
添加中文包,使之能够支持中文
coreseek-3.2.14-win32就是一款基于sphinx开发的一款sphinx全文索引
在使用sphinx时 首先需要拷贝etc/目录下的csft_mysql.conf 拷贝到其他目录 一般是coreseek根目录 并且改名为
sphinx.conf
配置数据源部分
source a67movie
{
type = mysql # 数据库类型
sql_host = localhost
sql_user = root
sql_pass = # 数据库的密码
sql_db = dedecmsv57utf8sp1 # 创建索引的数据库
sql_port = 3306
# 在取数据之前要执行的SQL语句
sql_query_pre = SET NAMES utf8
# 主查询:最重要的一个属性:一条SQL语句,这SQL语句取出的数据就是要创建索引的数据
# 要为哪些数据创建索引就通过这个SQL把数据取出来
# 要求:第一个字段必须是非负、非空、唯一数字,而且必须叫做ID
# 一个数据源中只能有一个主查询
sql_query = SELECT a.id,a.title,b.juqing FROM dede_archives a LEFT JOIN dede_addon17 b ON a.id=b.aid
}
配置索引文件存放路径
# 配置生成的索引文件
# 根据:与一个数据源相对应
# 语法:index 名字
index a67movie
{
source = a67movie #对应的source名称
# 生成的索引文件存放的目录
# 要求:目录中不能有中文
# 注意:目录中最后一个是文件的名字
path = G:\cz\sphinx\coreseek-3.2.14-win32\var\data\a67movie
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
# 中文包所在的目录
charset_dictpath = G:\cz\sphinx\coreseek-3.2.14-win32\etc
charset_type = zh_cn.utf-8
}
全局index定义
# 配置创建索引时使用内容量、内存越快建索引越快
indexer
{
mem_limit = 128M
}
searchd服务定义
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
# 返回数据最大的数量:最多只返回查询到的1000条记录
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = G:\cz\sphinx\coreseek-3.2.14-win32\var\log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = G:\cz\sphinx\coreseek-3.2.14-win32\var\log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = G:\cz\sphinx\coreseek-3.2.14-win32\var\log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}
执行sphinx下的一个程序
在命令行执行:indexer.exe -c sphinx配置文件 -all
在命令行执行:indexer.exe -c sphinx配置文件 指定配置文件中索引的名字