coreseek单索引同时搜索多张mysql表字段

17-11-29 00:28 字数 378 阅读 3317

一直用coreseek搜索一个表,但是既然叫全文搜索引擎,性能那么强劲,这么做有点太大材小用了。

首先先来看看我们要实现的功能。

我有两张表discussion话题表和comment话题回复表。

现在我搜索mysql这个关键词,我想同时搜索话题的标题内容以及话题的回复,这三个字段中含有mysql我都要查出来。

当然可以在coreseek配置文件中创建两个索引,一个索引discussion表,一个索引comment表。但是这么做很不灵活,分页基本上毁了,而且处理重复的数据也挺麻烦。

所以这个时候还是一个索引比较合适,我们可以在一个索引的sql_query中,使用联查,联查多张表,把一个话题下的所有回复串起来作为一个字段。

# 以前的sql  
# sql_query = SELECT id, title, content,keyword FROM discussion where id <= (select maxid from sph_ds_counter where counter_id = 1)  
# 联查的sql  
sql_query = SELECT ds.id,ds.title,ds.content,cm.cm_content FROM discussion as ds LEFT JOIN(SELECT id,discussion_id,GROUP_CONCAT(content) as cm_content FROM comment GROUP BY discussion_id) as cm ON ds.id = cm.discussion_id where ds.id <= (select maxid from sph_ds_counter where counter_id = 1)  

这样叫可以把符合条件的回复也查出来了,配置增量索引,性能消耗应该不是太大问题。

1人点赞>
关注 收藏 改进 举报
3 条评论
排序方式 时间 投票
dajiang

楼主的思路不错

Up骚年
@dajiang 😄
Up骚年

可通过本站的搜索功能体验效果

请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 145.88万
私信