兼济天下则达 独善其身则穷
因为一直都对Wordpress自带的搜索功能略有微词,可是又不想去改它,想想自己的博客一天都没有一个人会访问,更不用说这个搜索功能了。因为现在学习使用Sphinx-for-chinese,拿博客的数据来练练手。
先从最简单的情况开始,以后再一步一步的完善功能,这样才符合学习的线路,从易到难,而不是一开始就给你一个很完善的模型,然后改改路径就好了。最简单的情况就是只有一个主索引,然后隔一段时间重建索引。得益于Sphinx的高效,建索引的速度非常快,在文档中说达到了10M/s, 按照一篇文章为4KB计算,一秒钟可以给250篇文章建索引了,对于博客来说,已经足够了。对于其它的应用,当数据不多时,只有一个主索引也是可以的。
这里只使用了wp_posts表中的数据,只是用了ID, post_title, post_content, post_modified四个字段,所以非常的简单,直接上配置文件
source base{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = 123456
sql_db = blog
sql_port = 3306
}
source srcmain : base{
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query = \
SELECT ID, post_title, post_content, UNIX_TIMESTAMP(post_modified) AS post_modified FROM wp_posts WHERE \
post_status='publish' AND post_modified < NOW();
sql_attr_timestamp = post_modified
sql_field_string = post_title
}
index main {
source = srcmain
path = /home/long/sphinxforchinese/blog_search/var/data/main
docinfo = extern
charset_type = utf-8
chinese_dictionary = /home/long/sphinxforchinese/blog_search/etc/xdict
}
indexer {
mem_limit = 32M
}
searchd {
listen = 9300
log = /home/long/sphinxforchinese/blog_search/var/log/searchd.log
query_log = /home/long/sphinxforchinese/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /home/long/sphinxforchinese/var/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads
binlog_path = /home/long/sphinxforchinese/var/data
}
相关配置选项的意义可以查看示例,写的非常的详细。这里没有对post_content进行定义,因为只想对这个字段建索引,并不想保存它的原始内容,所以这里使用了默认行为,也就是只建索引。
建好索引,搜索跑步的相关文章,得到如下结果
搜索结果还行吧。