如何在neo4j中实现全文搜索?

时间:2016-03-01 07:52:14

标签: jdbc neo4j lucene

目前,我们正在使用neo4j-jdbc驱动程序构建我们的neo4j项目。我们正在执行所有操作,例如使用cypher查询创建具有属性的节点,删除节点以及在两个节点之间创建关系。 示例代码是这样的

Class.forName("org.neo4j.jdbc.Driver");

// Connect
 Connection con = DriverManager.getConnection("jdbc:neo4j://localhost:7474/");

// Querying
try(Statement stmt = con.createStatement())
{
ResultSet rs = stmt.executeQuery("MATCH (n:User) RETURN n.name");
while(rs.next())
{
    System.out.println(rs.getString("n.name"));
}
}

我们正在使用cypher查询子句执行所有基本搜索。 我已经研究了neo4j中的索引,试图理解这一点,但仍然没有成功地理解全文索引的确切含义。

现在我们必须在项目中应用全文搜索,但我们不知道如何使用 Lucene Queries 与Cypher Queries申请全文搜索。我们在neo4j中使用lucene查询得到的示例代码是使用嵌入式数据库或rest api。

问题: -

  1. neo4j中的全文搜索。

  2. 在密码查询中嵌入lucene查询。

  3. 全文索引。

1 个答案:

答案 0 :(得分:3)

Cypher中有一些basic string comparison operators,包括STARTS WITHENDS WITHCONTAINS

例如:

MATCH (n.User) WHERE n.name STARTS WITH "Bob" RETURN n;

对于更强大的全文索引,您需要使用Neo4j所指的Legacy Indexes。有关概述,请参阅this blog post

启用旧版自动索引后,您可以在Cypher的START子句中通过任何lucene查询引用它。例如:

START user=node:node_auto_index("name:Bob*")
...