我们在嵌入模式下使用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;
}
有更好的方法吗?
答案 0 :(得分:0)
OIndex 和 OIndexCursor 是文档数据库的公共API,所以不用担心,您可以使用它。 然而,API的主要目的是为SQL引擎和其他内部组件提供灵活性,因此不太方便。
我建议你使用sql查询,它们提供相同级别的灵活性和更紧凑,使它们的使用更加方便。