3

在 MiniGUI 中,我可以看到db.index. 如何tree.spatial.rstarvariants.rstar.RStartTreeFactory通过 Java 代码将其设置为?

我已经实现:

params.addParameter(AbstractDatabase.Parameterizer.INDEX_ID,tree.spatial.rstarvariants.rstar.RStarTreeFactory);

对于addParameter()函数tree.spatial...RStarTreeFactory类的第二个参数未找到

// Setup parameters:
            ListParameterization params = new ListParameterization();
            params.addParameter(
                    FileBasedDatabaseConnection.Parameterizer.INPUT_ID,
                    fileLocation);
            params.addParameter(AbstractDatabase.Parameterizer.INDEX_ID,
                RStarTreeFactory.class);

我越来越NullPointerException。我使用RStarTreeFactory.class正确吗?

4

1 回答 1

2

ELKI 命令行(和 MiniGui;它是一个命令行构建器)允许指定速记类名,省略了实现接口的包前缀。

完整的命令行文档产生:

-db.index <object_1|class_1,...,object_n|class_n>
    Database indexes to add.
    Implementing de.lmu.ifi.dbs.elki.index.IndexFactory
    Known classes (default package de.lmu.ifi.dbs.elki.index.):
    -> tree.spatial.rstarvariants.rstar.RStarTreeFactory
    -> ...

即对于这个参数,类前缀de.lmu.ifi.dbs.elki.index.可以省略。

因此,完整的类名是:

de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeFactory

或者您只需键入RStarTreeFactory,然后让 eclipse 自动修复导入:

params.addParameter(AbstractDatabase.Parameterizer.INDEX_ID,
    RStarTreeFactory.class);
// Bulk loading static data yields much better trees and is much faster, too.
params.addParameter(RStarTreeFactory.Parameterizer.BULK_SPLIT_ID, 
    SortTileRecursiveBulkSplit.class);
// Page size should fit your dimensionality.
// For 2-dimensional data, use page sizes less than 1000.
// Rule of thumb: 15...20 * (dim * 8 + 4) is usually reasonable
// (for in-memory bulk-loaded trees)
params.addParameter(AbstractPageFileFactory.Parameterizer.PAGE_SIZE_ID, 300);

另请参阅:教程文件夹中的地理索引示例

于 2014-05-27T11:59:57.023 回答