通过用户对于某标签是否有阅读权限,从而实现只展示用户有权限阅读的标签的文章。
1.获得用户信息(UID = 2)
2.获得UID可以阅读的Tag列(这里面我考虑借鉴Thinkphp auth类)[1,2,3,4,5]
.......
然后思路断了,因为我希望实现的是严格的`与式`关系,而非`或式`
如果用`或式`,大致思路还可以往下面走
.........
通过Tag列去获得文章内容,如:
$rule = array(1,3,4); //假定可以获得的标签权限为
// $where = array('tag_id'=>array('in',$rule));
$where = array('article_tag.tag_id'=>I('id',0)); //实际上,微量数据数据可以用in,大量数据不能
$data = M('article_tag')
->field('article_tag.article_id,article.id,article.title')
//->distinct(true)
->join('Article ON article.id = article_tag.article_id')
// ->join('tag ON tag.id = article_tag.tag_id')
->limit(1000)
->where($where)
->select();
dump($data);然后如果用`与式`的权限机制,文章A有 1,2,3 标签,文章B有 1,2,6标签,文章C有 1,3标签,文章D有 4,6标签,UID = 2的只有阅读[1,2,3,4,5]标签列的权限,我在获得文章列的时候,没有任何办法高效的获得文章A、C的数据。
笨办法是把文章都取下来,然后把文章的标签也取下来,再然后把文章的标签与权限标签进行匹配,取出有标签的文章标签。这种办法可以理解为后期过滤,然而这种做法并不优秀。
我需要这些算法(非取出数据用程序过滤):
1.获得阅读[1,2,3,4,5]标签列的权限的所有文章数据列,其中文章所有标签都有阅读权
2.全文搜索获得有权限的文章的数据列(您不需要提供中文分词技术,实现英文版全文搜索即可)
求支招。
您可以私信联系我,嗯,带上您需要多少报酬。
最佳答案