首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过用户管理的位置查询和排序文档的最佳解决方案?

通过用户管理的位置查询和排序文档的最佳解决方案?
EN

Stack Overflow用户
提问于 2012-08-31 17:52:53
回答 3查看 150关注 0票数 2

User拥有一个或多个文档子集(Posts)。其思想(UX)是让User管理(可选)在一个子集中显示Posts的顺序。

默认情况下,PostsCreatedOn排序。最终,drag-and-drop Posts将管理他们的订单。这将允许User 促进和组织 its Posts

一个简单的Int32字段Position提出了许多问题。例如:

  • 你允许一个职位是消极的吗?
  • 你如何处理职位相同的职位?
  • 你有没有引入空隙来减少碰撞?
  • 每次职位变更时,你会更新所有的帖子吗?
  • 等等。

。。最后我的观点是:

按用户管理的位置排序Lucene文档的最佳解决方案是什么?Int32字段Position吗?

编辑(有价值信息):

  • 文章位于数据库和Lucene索引中。
  • Posts是分页的
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-31 23:02:01

看看这个问题:Reordering an ordered list

不幸的是,这个问题没有完美的解决办法;-)

票数 1
EN

Stack Overflow用户

发布于 2012-08-31 18:02:52

我认为最简单的方法就是模仿一个链接列表。将每个文档添加一个指向下一个文档的指针。如果您不能直接这样做(实际上您没有地址,因为它们位于数据库或其他任何地方),您可以为每个文档使用in和nextID。只需确保ID是不同的。当用户将拖放时,只需重新连接列表即可。

票数 3
EN

Stack Overflow用户

发布于 2012-09-01 20:31:55

我认为CustomScoreQuery可以解决这个问题

代码语言:javascript
复制
public class MyScoreQuery : Lucene.Net.Search.Function.CustomScoreQuery
{
    public MyScoreQuery (Query q) : base(q)
    {
    }
    public override float CustomScore(int doc, float subQueryScore, float valSrcScore)
    {
        //read the doc if you need "indexReader.Document(doc)"
        //and apply your custom logic returning a float
    }
} 

它的用法可能是

代码语言:javascript
复制
Query realQuery =  ........
Query q = new MyScoreQuery (realQuery);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12220319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档