【发布时间】:2014-07-18 20:53:27
【问题描述】:
我们在嵌入式模式下使用 OrientDB,并希望通过 Java api 调用直接访问它(不使用 SQL-ish 语言)。我们有一个索引,需要对其执行范围搜索。这是迄今为止我找到的唯一方法:
String startAt = createInternalOIndexSearchableKey(actualKey);
Index<Edge> index = graph.getIndex(indexName, Edge.class);
OrientIndex orientIndex = (OrientIndex) index;
OIndex oIndex = orientIndex.getUnderlying();
boolean INCLUSIVE = true;
boolean ASCENDING = true;
OIndexCursor cursor = oIndex.iterateEntriesMajor(startAt, INCLUSIVE, ASCENDING);
while(cursor.hasNext())
{
Entry<Object, OIdentifiable> entry = cursor.nextEntry();
...process the entry here
偏离正常的公共 API 这么远感觉不舒服。特别是createInternalOIndexSearchableKey的实现:
private String createInternalOIndexSearchableKey(String actualKey)
{
// NOTE: Keys passed to OIndex.iterateEntriesMajor must
// be in the (undocumented) format: EdgeLabel!=!ActualKey
return KEY_CAN_DOWNLOAD_PUBCODETIMESTAMP + "!=!" + actualKey;
}
有没有更好的方法来做到这一点?
【问题讨论】: