PHP7中文手册2018 带注释 最新chm版
关于sphinx的具体性能可以去百科上查看,这里就不在复制粘贴了。
全文检索引擎,检索就需要检索的数据,那么数据源是怎么保存在sphinx中的呢?
首先我们要想到为什么我们要用sphinx呢,因为它的检索速度更快!对于一个大的业务系统,mysql中可能存在这百万甚至千万的记录,这就影响到我们的查询效率,尤其是当sql中包含groupby,orderby的时候效率差的更多。而sphinx可以满足我们的需求,只需将mysql中的数据按照自己的需求保存到sphinx中,从sphinx中查询就快的多了,注意保存到sphinx中的数据不是全部的mysql数据,sphinx中只保存索引和属性。
下面开始说下如何将mysql数据源导入到sphinx中
在sphinx的安装目录下会有bin etc share var这几个目录
cd etc
和php一样,sphinx也有一个配置文件的模板sphinx.conf.dist
cp sphinx.conf.dist sphinx.conf #生成一份新的配置文件,供自己修改
sphinx.conf中有主要的几部分,source(数据源),index(索引),indexer(索引器配置),searchd(sphinx守护进程),common(公共配置)
source source_name {
type=mysql
sql_host = 10.168.1.1
sql_user = db_user
sql_pass = db_pass
sql_db = db_name
sql_port = db_port # optional, default is 3306
# pre-query, executed before the main fetch query
# multi-value, optional, default is empty list of queries
sql_query_pre = SET NAMES utf8
# 生成sphinx的主要数据源
# mandatory, integer document ID field MUST be the first selected column
sql_query = select * from table where 1 group by field1
#将如下字段作为属性
sql_attr_uint = fiedl1 #无符号整型
sql_attr_float = field2 #浮点型
sql_attr_timestamp = field3 #时间戳
#添加附属属性
#sql_attr_multi = ATTR-TYPE ATTR-NAME ‘from’ SOURCE-TYPE \
#[;QUERY] \
#[;RANGE-QUERY]
sql_attr_multi = uint id2 from query; SELECT field1, id2 FROM table2
sql_attr_multi = uint id3 from query; SELECT fiedl1, id3 FROM table3
# ranged query throttling, in milliseconds
# optional, default is 0 which means no delay
# enforces given delay before each query step
sql_ranged_throttle = 0
}
index index_name {
type = plain
source = source_name
path = /data/sphinx/source_name #默认在/usr/local/sphinx/var/data/index_name
docinfo = extern
mlock = 1 #开启内存锁
morphology = none #预处理器列表,默认为none
min_word_len = 1 #保存的最小索引词
preopen = 1 #预打开索引
inplace_enable = 1 #开启就地转化,防止同一个文件过大
}
indexer {
mem_limit = 1024M #内存限制,推荐256-1024
max_iops = 0 #每秒最大的io,0代表不限制
max_iosize = 0 #io最大字节,0代表不限制
write_buffer = 1M
max_file_field_buffer = 8M
lemmatizer_cache = 1024M #开启lemmatization后改进创建索引时间
}
searchd主要设置sphinx的端口号,日志,链接超时时间,fork子进程数量等等。
配置完成后,可以开始创建索引了
进入到sphinx/bin目录下
indexer -c ../etc/sphinx.conf source_name
创建成功后就可以用api查询数据了
在我们测试机上安装扩展木有成功,暂时用的php类文件,不过用法和扩展一样
转载请注明:谷谷点程序 » php + sphinx 的详细说明