User拥有一个或多个文档子集(Posts)。其思想(UX)是让User管理(可选)在一个子集中显示Posts的顺序。
默认情况下,Posts按CreatedOn排序。最终,drag-and-drop Posts将管理他们的订单。这将允许User 促进和组织 its Posts。
一个简单的Int32字段Position提出了许多问题。例如:
。。最后我的观点是:
按用户管理的位置排序Lucene文档的最佳解决方案是什么?是Int32字段Position吗?
编辑(有价值信息):
发布于 2012-08-31 23:02:01
看看这个问题:Reordering an ordered list
不幸的是,这个问题没有完美的解决办法;-)
发布于 2012-08-31 18:02:52
我认为最简单的方法就是模仿一个链接列表。将每个文档添加一个指向下一个文档的指针。如果您不能直接这样做(实际上您没有地址,因为它们位于数据库或其他任何地方),您可以为每个文档使用in和nextID。只需确保ID是不同的。当用户将拖放时,只需重新连接列表即可。
发布于 2012-09-01 20:31:55
我认为CustomScoreQuery可以解决这个问题
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
}
} 它的用法可能是
Query realQuery = ........
Query q = new MyScoreQuery (realQuery);https://stackoverflow.com/questions/12220319
复制相似问题