用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3331|回复: 5
收起左侧

[HELP] 关于一个搜索及标签系统的实现

[复制链接]
发表于 2011-8-26 11:44:53 | 显示全部楼层 |阅读模式
本帖最后由 nymbian 于 2011-8-26 11:46 编辑

建立 一个tag表
每次搜索时 ,如果是从未搜索过的,插入一个新tag。
如果已被搜索过,搜素次数加1 。
PHP复制代码
 $query = $this->db->get_where('tag', array('tag_name' => $search));
        if ($query->num_rows() > 0) {
            $row = $query->first_row();
            $search_time = $row->search_time + 1;
            $data = array(
                'search_time' => $search_time
            );
            $this->db->where('tag_name', $search);
            $this->db->update('tag', $data);
        } else {
            $data = array(
                'tag_name' => $search,
                'search_time' => 1
            );
复制代码

1600482nq1q1wu2muzwdqw.png.thumb.jpg

另一个表 correlation 表示相关性
tag1与tag2的相关性 correlation用百分比表示,最大是1。
判断这个相关性取决于两个tag搜索的结果集的相似性。
使用一个类似搜索引擎的程序按特定时间去更新。

160048xz55j1x7xi1l7l3v.png
判断相关tag时可以设定一个相关性阀值,例如70%结果集相同才能认定为相关tag


correlation的数据量为 不排序从X个中取2个。
求助下怎样实现 从x个tag中取出两个的算法

发表于 2011-8-26 12:16:10 | 显示全部楼层
最后两行难以理解其中文含义,可能我语文学的太差了
 楼主| 发表于 2011-8-26 14:03:02 | 显示全部楼层
visvoy 发表于 2011-8-26 12:16
最后两行难以理解其中文含义,可能我语文学的太差了

就是把tag表中所有的tag取出来两两对比算出相关性
发表于 2011-8-26 14:24:08 | 显示全部楼层
楼主数据库设计的思想是1对多。其实tag应用,以及在全文显示里吐出tag,并为tag插入超链接(直接指向搜索),需要多对多的设计思路。
发表于 2011-8-26 19:50:16 | 显示全部楼层
支持ls,两两对比无法应付大规模的tag应用
发表于 2011-10-14 13:50:02 | 显示全部楼层
这样的话,数据量是不是太大?
假如tag表有100条记录,那么,correlation表就是99*100条记录。而且相关性是不是还要自己添加?

本版积分规则