浏览 3756 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-09
如果最终结果中,三个条件都各自有100个符合的结果,最终会返回300条结果。 现在我有这种需求:要求返回30条结果,但是保证三个条件各自返回10条,能不能实现??还是lucene可以实现? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-08-09
wjyuian 写道 有这样一个查询(key1 : val1) OR (key1 : val2) OR (key1 : val3),
如果最终结果中,三个条件都各自有100个符合的结果,最终会返回300条结果。 现在我有这种需求:要求返回30条结果,但是保证三个条件各自返回10条,能不能实现??还是lucene可以实现? 有个问题,就是如果“三个条件都各自有100个符合的结果,最终会返回300条结果”,你考虑过有没有重复的文档数,而且你的是在同一个字段(key1)中检索的。 正常情况下,如果是OR条件,如果取30条就是得分最高的前30条记录,不能够区分出每个 key:val是不是均分10条记录,可能有的key:val查询得分较高。不考虑效率性能问题,最简单的就是查询三次,每次取10条,凑成30条,也可以使用并发来做,solr支持多线程并发操作滴。 如果key是不分词的,如string类型字段,这样的话可以保证有300条结果,也即没有重复的文档数,完了既然是不分词字段,就可以使用solr的group来做,之后从结果中过滤value即可,group=true&group.field=key 如果key是分词字段,很难避免文档的重复性,暂时还木牛想到。 |
|
返回顶楼 | |
发表时间:2012-08-09
诗意生活 写道 wjyuian 写道 有这样一个查询(key1 : val1) OR (key1 : val2) OR (key1 : val3),
如果最终结果中,三个条件都各自有100个符合的结果,最终会返回300条结果。 现在我有这种需求:要求返回30条结果,但是保证三个条件各自返回10条,能不能实现??还是lucene可以实现? 有个问题,就是如果“三个条件都各自有100个符合的结果,最终会返回300条结果”,你考虑过有没有重复的文档数,而且你的是在同一个字段(key1)中检索的。 正常情况下,如果是OR条件,如果取30条就是得分最高的前30条记录,不能够区分出每个 key:val是不是均分10条记录,可能有的key:val查询得分较高。不考虑效率性能问题,最简单的就是查询三次,每次取10条,凑成30条,也可以使用并发来做,solr支持多线程并发操作滴。 如果key是不分词的,如string类型字段,这样的话可以保证有300条结果,也即没有重复的文档数,完了既然是不分词字段,就可以使用solr的group来做,之后从结果中过滤value即可,group=true&group.field=key 如果key是分词字段,很难避免文档的重复性,暂时还木牛想到。 谢谢!! 我再描述一下场景,,key1是一个不分词的字段,也是string类型。 上面说的,并发操作,然后自己合并,主要是分页问题比较难搞,而且每次都需要多次查询,性能牺牲太大。 你说的group功能,我还没试过,我去研究下先 |
|
返回顶楼 | |