按相关性对领域结果进行排序



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

假设我有以下模型:

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; 
}

因此,RealmObjects 之间的关系是: 文章(多对多(标签(多对多(文章标签关系

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

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);

最新更新