sphinx配置文件的这个部分是实时索引[realtime index]的配置,实时索引不需要数据源的配置,而且可以象操作mysql数据表一样对索引实现实时的增删改查。
index rt
{
# 'rt' index type must be specified to use RT index
type = rt
# index files path and file name, without extension
# mandatory, path must be writable, extensions will be auto-appended
path = D:\sphinx/data/rt
charset_type = utf-8
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
ngram_chars = U+3000..U+2FA1F
# RAM chunk size limit
# RT index will keep at most this much data in RAM, then flush to disk
# optional, default is 128M
#
rt_mem_limit = 512M
# full-text field declaration
# multi-value, mandatory
rt_field = title
rt_field = content
# unsigned integer attribute declaration
# multi-value (an arbitrary number of attributes is allowed), optional
# declares an unsigned 32-bit attribute
rt_attr_uint = gid
# RT indexes currently support the following attribute types:
# uint, bigint, float, timestamp, string, mva, mva64, json
#
# rt_attr_bigint = guid
# rt_attr_float = gpa
# rt_attr_timestamp = ts_added
# rt_attr_string = author
# rt_attr_multi = tags
# rt_attr_multi_64 = tags64
# rt_attr_json = extra_data
}
/*
实时索引
http://phpff.com
*/
header('Content-type:text/html;charset=utf-8');
//mysql 数据库链接
$link = mysql_connect('localhost', 'root', '');
mysql_query('set names utf8');
mysql_select_db('test', $link);
//sphinx mysql数据库实时索引链接
$sphinxLink = mysql_connect('localhost:9306');
//查询mysql表中的数据
$sets = mysql_query('select * from documents', $link);
//遍历数据建立索引
while ($row = mysql_fetch_assoc($sets)) {
$sphinxSql = "insert into rt(id,gid,title,content) values ({$row['id']},{$row['group_id']},'{$row['title']}','{$row['content']}')";
$res = mysql_query($sphinxSql, $sphinxLink);
}
//测试实时索引的效果
$key = 'test';
$sql = "select * from rt where match('{$key}')";
$rs = mysql_query($sql, $sphinxLink);
while ($row = mysql_fetch_assoc($rs)) {
print_r($row);
}
?>
参考:
http://www.sphinxsearch.org/archives/260