jcouchdb を使用してテーブル/コレクションのインデックス作成に問題があります。実際には非常に単純に見えますが、いくつかの調査の後、問題がどこにあるのかわかりません。私は公式のテストクラスに従いました:
次のコードを見てください。
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 番目の質問: コレクション内の列/属性にインデックスを付けるためにスキーマを定義する必要がありますか、それとも別の方法がありますか?