我有一个数据库,其中包含我使用Lucene索引的文档 - 并非所有字段都与搜索相关,因此只是其中的一部分实际上已编入索引。搜索为我提供了按其分数排序的文档ID列表。我用这个清单找到Ebeans
PagingList<MyDoc> pagingList = Ebean.find(MyDoc.class)
.where().in("id", idList)
.findPagingList(pageSize);
我想明显保留排序顺序。据我所知,EBean中没有构建方式,为了保留顺序,我找不到一个排序函数,让我实现一个Comparator。
有没有办法做到这一点?
更新
正如Rob所说,我正在使用List&lt;&gt;并自己排序。
PagingList<MyDoc> pagingList = Metadata.find(MyDoc.class)
.where().in("id", idList).findPagingList(PAGE_SIZE);
Page<MyDoc> pg = pagingList.getPage(page);
List<MyDoc> results = pg.getList();
Collections.sort(results, new Comparator<MyDoc>() {
@Override
public int compare(MyDoc o1, MyDoc o2) {
if (idList.indexOf(o1.id) > idList.indexOf(o2.id)) {
return 1;
}
else if (idList.indexOf(o1.id) < idList.indexOf(o2.id)) {
return -1;
}
else {
return 0;
}
}
});
答案 0 :(得分:0)
使用findList()而不是findPagingList() - 它将返回一个List ...然后在列表中使用您自己的比较器自行排序。