将Manticore Search与Wordpress数据库结合起来

2018-10-03 约 914 字 预计阅读 2 分钟

前两天安装了Manticore Search,但只是根据其安装说明测试了一下,还没有完全了解其概念。

今天又学习了一下,他的概念是将慢速的数据库内容存在其内,然后用其高速算法检索出id,再正常的应用即可。

这样我就再做一个配置文件
sudo nano sphinx.conf

贴上下列内容:
#
# INDEX GROUP:
# MY BLOG
#
# SOURCES:
# src_my_blog
#
# INDEXES:
# idx_blog
#
#
source src_my_blog {
type = mysql
sql_host = localhost
sql_user = yourusername
sql_pass = yourpassword
sql_db = wordpress
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT \
p.ID as ID, \
p.post_title as title, \
p.post_content as body, \
UNIX_TIMESTAMP(p.post_date) AS date_added \
FROM \
wp_posts as p \
WHERE \
p.post_type = 'post' AND \
p.post_status = 'publish';
sql_attr_string = title
sql_field_string = body
sql_attr_timestamp = date_added
}
index idx_blog {
source = src_my_blog
path = /var/lib/manticore/data/idx_blog
docinfo = extern
mlock = 0
min_word_len = 1
### support Chinese words query ###
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_len = 1
ngram_chars = U+3000..U+2FA1F
html_strip = 1
html_index_attrs = img=alt,title; a=title;
html_remove_elements = style, script, object, embed, span
}
#############################################################################
## indexer settings
#############################################################################
indexer
{
# memory limit, in bytes, kiloytes (16384K) or megabytes (256M)
# optional, default is 128M, max is 2047M, recommended is 256M to 1024M
mem_limit = 256M
}
#############################################################################
## searchd settings
#############################################################################
searchd
{
listen = 9312
listen = 9306:mysql41
log = /var/log/manticore/searchd.log
query_log = /var/log/manticore/query.log
read_timeout = 5
client_timeout = 300
max_children = 30
persistent_connections_limit = 30
pid_file = /var/run/manticore/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
mva_updates_pool = 1M
max_packet_size = 8M
max_filters = 256
max_filter_values = 4096
max_batch_queries = 32
workers = threads # for RT to work
binlog_path = /var/lib/manticore/data # binlog.001 etc will be created there
}
# --eof--

CTRL-X存盘退出。

运行检索命令将其加入:
sudo indexer --config /path/sphinx.conf --all --rotate

再运行searchd命令,启动search服务
sudo searchd --config /path/sphinx.conf

好了,我们再次mysql登陆到Manticore Search数据服务器
mysql -h0 -P9306

看一下数据表收录没有
mysql> show tables;

+----------+-------+
| Index | Type |
+----------+-------+
| idx_blog | local |
+----------+-------+
1 row in set (0.00 sec)

没有问题,idx_blog进入了。

这下都是本博客的文章了。运行几个命令测试一下
mysql> select * from idx_blog where match('天道');

出来11个结果



缺省是按相关度排序的。我们可以自己控制其排序,比如最新的帖子列在上面,SQL命令如下
mysql> select * from idx_blog where match('天道') ORDER BY date_added DESC;

结果就是



说明收录帖子,和搜索功能都没有问题了。

但是咋跟PHP语言结合起来,显示结果在Wordpress平台下的帖子里面呢?

w3schools找到一篇介绍PHP和AJAX的文章。学习了一下,做一个前端HTML。



然后再生成一个php文件,作为后台处理。



实验了SphinxQL的snippet功能和ajax排序,代码实现效果如下:

Manticore Search:



可以看出Snippet对中文支持还是不错。字符全部都加黑了。

author

Jesse Lau

网名遁去的一,简称遁一。2012年定居新西兰至今,自由职业者。
本文采用知识共享署名 4.0 国际许可协议进行许可。简而言之,可随意转发转载,转载请注明出处。


留点评论吧:

本网站使用cookie技术以提高用户体验度。 了解我们的隐私政策 我已了解