0

埋め込みモードで OrientDB を使用しており、(SQL っぽい言語を使用せずに) Java API 呼び出しで直接アクセスしたいと考えています。インデックスがあり、それに対して範囲検索を実行する必要があります。これまでに見つけた唯一の方法は次のとおりです。

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

これを行うより良い方法はありますか?

4

1 に答える 1

0

OIndexOIndexCursorはドキュメントデータベースの公開APIなので安心して使えます。ただし、API の主な目的は、SQL エンジンやその他の内部コンポーネントに柔軟性を提供することであるため、あまり便利ではありません。

SQL クエリを使用することをお勧めします。SQL クエリは、同じレベルの柔軟性とよりコンパクトな機能を提供するため、より便利に使用できます。

于 2014-07-21T08:35:09.300 に答える