无法使用InProcessServer()SDN 4配置node_auto_index

时间:2015-12-17 17:22:26

标签: java spring neo4j spring-data-neo4j-4

我使用以下java配置为我的Neo4j(使用SDN 4.0.0.RELEASE)应用程序,单元测试:

...
@Bean
public Neo4jServer neo4jServer() {
    return new InProcessServer();
}

@Bean
public SessionFactory getSessionFactory() {
    Neo4jRequest<String> neo4jRequest = new DefaultRequest(httpClient);
    String json = "{" + "\"name\" : \"node_auto_index\", " + "\"config\" : {" + "\"type\" : \"fulltext\", "
            + "\"provider\" : \"lucene\"" + "}" + "}";
    neo4jRequest.execute(neo4jServer().url() + "db/data/index/node/", json);
    return new SessionFactory("org.myproject.domain");
}
...

我在getSessionFactory()上创建了一个全文node_auto_index。我实际上错过了如何配置Neo4j的当前内存中的比例,因为我需要设置这些属性:

node_auto_indexing=true
node_keys_indexable=title

我读了&#34;良好关系:春季数据Neo4j指南书&#34;

  

InProcessServer对测试和开发环境很有用,但不建议用于生产。此实现将启动在可用本地端口上运行的CommunityNeoServer的新实例,并返回连接到它所需的URL。

我需要使用CommunityNeoServer吗?我是否应该使用它,即使它被弃用了?在这种情况下,如何为支持节点自动索引的内存数据库配置它?

1 个答案:

答案 0 :(得分:0)

如果您想提供其他配置,您可以提供自己的Neo4jServer实施,如下所示:

public class AutoIndexTestServer implements Neo4jServer {

    final String uri;

    public AutoIndexTestServer() {
        try {
            ServerControls controls = TestServerBuilders.newInProcessBuilder()
                    .withConfig("dbms.security.auth_enabled", "false")
                    .withConfig("node_auto_indexing", "true")
                    .withConfig("node_keys_indexable", "title")
                    .newServer();
            uri = controls.httpURI().toString();

        }
        catch (Exception e) {
            throw new RuntimeException("Could not start inprocess server",e);
        }
    }

    @Override
    public String url() {
        return uri;
    }

    @Override
    public String username() {
        return null;
    }

    @Override
    public String password() {
        return null;
    }
}

并使用它

 @Bean
 public Neo4jServer neo4jServer() {
     return new AutoIndexTestServer();
 }