一直用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)
这样叫可以把符合条件的回复也查出来了,配置增量索引,性能消耗应该不是太大问题。