3

jcouchdb を使用してテーブル/コレクションのインデックス作成に問題があります。実際には非常に単純に見えますが、いくつかの調査の後、問題がどこにあるのかわかりません。私は公式のテストクラスに従いました:

https://code.google.com/p/orient/source/browse/trunk/tests/src/test/java/com/orienttechnologies/orient/test/database/auto/ClassIndexTest.java

次のコードを見てください。

public class TestIndex {
    public static final String dbname = "indextest";
    public static final String colname = "object";
    public static final String indexAttribute = "ATTR1";

    public static void main(String[] args)
    {

        //ODatabaseDocumentTx db = new ODatabaseDocumentTx ("local:/tmp/databases/" + dbname).create();
        ODatabaseDocumentTx db = new ODatabaseDocumentTx ("local:/tmp/databases/orienttestdb");
        db.open("admin", "admin");

        try {
            if(db.getMetadata().getSchema().existsClass(colname))
                db.getMetadata().getSchema().dropClass(colname);
            OClass object = db.getMetadata().getSchema().getOrCreateClass((colname));
            object.createProperty(indexAttribute, OType.INTEGER);
            object.createIndex(colname, OClass.INDEX_TYPE.NOTUNIQUE, indexAttribute);
            db.getMetadata().getSchema().save();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            db.close();
        }
    }
}

私は常に次の例外を受け取ります。

Exception in thread "main" java.util.ServiceConfigurationError: com.orientechnologies.orient.core.index.OIndexFactory: Provider com.orientechnologies.orient.core.index.hashindex.local.OHashIndexFactory could not be instantiated: java.lang.NoSuchFieldError: UNIQUE_HASH
    at java.util.ServiceLoader.fail(Unknown Source)
    at java.util.ServiceLoader.access$100(Unknown Source)
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
    at java.util.ServiceLoader$1.next(Unknown Source)
    at com.orientechnologies.orient.core.index.OIndexes.getFactories(OIndexes.java:76)
    at com.orientechnologies.orient.core.index.OIndexes.getAllFactories(OIndexes.java:87)
    at com.orientechnologies.orient.core.index.OIndexes.createIndex(OIndexes.java:117)
    at com.orientechnologies.orient.core.index.OIndexManagerShared.createIndex(OIndexManagerShared.java:76)
    at com.orientechnologies.orient.core.index.OIndexManagerProxy.createIndex(OIndexManagerProxy.java:68)
    at com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1123)
    at com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1085)
    at com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1081)

誰もがこれに対する解決策を知っていますか. また、データベースを閉じて開いたり、スキーマを保存したり、さまざまなインデックスタイプを使用したりしましたが、良い結果は得られませんでした。

2 番目の質問: コレクション内の列/属性にインデックスを付けるためにスキーマを定義する必要がありますか、それとも別の方法がありますか?

4

0 に答える 0