gpt4 book ai didi

java - 按相关性对 RealmResults 进行排序

转载 作者:行者123 更新时间:2023-12-02 12:21:13 26 4
gpt4 key购买 nike

我正在尝试创建一个搜索引擎来显示包含不同标签的结果。结果必须按相关性排序。

假设我有以下型号:

public class Article extends RealmObject{
@PrimaryKey
private String aID = UUID.randomUUID().toString();
private RealmList<Tags> tags;
}

public class Tags extends RealmObject{
@PrimaryKey
private String tID = UUID.randomUUID().toString();
private String tag;
private RealmList<articleTagsRelation> articlesTag;
}

public class articleTagsRelation extends RealmObject{
private String tID;
private String aID;
private long timesArticleSelectedByTag;
}

所以RealmObject之间的关系是:文章(多对多)标签(多对多)articleTagsRelation

当用户按标签搜索时,应用程序应返回填充搜索的所有文章:

realm.where(Article.class).equalTo("tags.tag", userSearch).findAll().

但是,我想按相关性对结果进行排序。此示例中的相关性是用户在通过相关标签 (articleTagsRelation.timesArticleSelectedByTag) 搜索时选择文章的次数。

我已经努力寻找一种直接的方法来实现这一目标,但没有结果。有什么直接的方法可以做到吗?如果不是,将结果逐一排序将是唯一的解决方案?

谢谢

最佳答案

Realm 3.5.0+:

public class Article extends RealmObject{
@PrimaryKey
private String aID = UUID.randomUUID().toString();
private RealmList<Tags> tags;

@LinkingObjects("article")
private final RealmResults<ArticleTagsRelation> articleOfRelation = null;
}

public class Tags extends RealmObject{
@PrimaryKey
private String tID = UUID.randomUUID().toString();
private String tag;

@LinkingObjects("tag")
private final RealmResults<ArticleTagsRelation> tagOfRelation = null;
}

public class ArticleTagsRelation extends RealmObject{
private Tags tag;
private Article article;
private long timesArticleSelectedByTag;
}

realm.where(Article.class)
.equalTo("tags.tag", userSearch)
.findAllSorted("articleOfRelation.timesArticleSelectedByTag", Sort.DESCENDING);

关于java - 按相关性对 RealmResults 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com