0

根据最新的 Titan 0.4.1文档,此代码应该可以对结果集中的顶点进行排序:

graph.query().has("name",CONTAINS,"john").orderBy("age",Order.DESC).limit(10).vertices()

我想在一组可能很大的顶点上执行这种类型的查询,因此想对其进行索引。文档建议:

大多数外部索引后端都支持原生且高效的排序。但是,必须将 orderBy 方法中使用的属性键配置为在此索引后端中进行索引,以支持原生结果排序。这在 orderBy 键与查询键不同的情况下很重要。如果属性键没有被索引,那么排序需要将所有结果加载到内存中。

特别是对于 Elasticsearch 后端,我们如何创建一个支持这种orderBy方法的索引?

是否有一个简单的第三个参数可以传递给KeyMaker's方法,可能是文档indexed中以下示例的扩展?

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();
4

1 回答 1

2

您只需要在 ES 中索引该属性(就像任何其他属性一样)。

在 Titan 中编制索引(错误;不会优化 orderBy):

graph.makeKey("age").dataType(Integer.class).indexed(Vertex.class).make();

在 ES 中索引(正确;在 ES 中的本机结果排序):

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();

干杯,丹尼尔

于 2013-12-19T23:07:26.863 回答