RethinkDB:​​自定义评分(如Elasticsearch)

时间:2015-01-24 21:14:40

标签: elasticsearch rethinkdb

我最近发现了RethinkDB,发现它的查询语言要比Elasticsearch简单得多。我无法找到解决方案的唯一用例是指定如何根据文档的字段对结果进行评分,就像您在Elasticsearch(http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/script-score.html)中所做的那样。有没有办法在RethinkDB中对查询结果进行评分并只返回前n个结果?

1 个答案:

答案 0 :(得分:1)

如果您有r.table('comments').filter(r.row('name').eq('tldr'))之类的查询,那么您可以执行r.table('comments').filter(r.row('name').eq('tldr')).map({score: CALCULATE_SCORE(r.row), row: r.row}).orderBy('score').limit(n)之类的操作来返回热门n结果。请注意,他确实与原始查询中的结果数成比例。如果这太贵了,您可以通过编写r.table('comments').indexCreate('score', CALCULATE_SCORE(r.row))然后编写r.table('comments').orderBy({index: 'score'}).limit(n)来执行与索引类似的操作。