【问题标题】:How to implement Full text search in neo4j?neo4j中如何实现全文搜索?
【发布时间】:2016-03-01 07:52:13
【问题描述】:

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

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"));
  }
}

我们正在使用密码查询子句执行所有基本搜索。 我研究过 neo4j 中的索引,也试图理解这一点,但仍然无法理解全文索引的确切含义。

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

问题:-

  1. neo4j 中的全文搜索。

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

  3. 全文索引。

【问题讨论】:

标签: jdbc neo4j lucene


【解决方案1】:

Cypher 中有一些basic string comparison operators 可用,包括STARTS WITH、ENDS WITH 和CONTAINS。

例如:

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*")
...

【讨论】:

猜你喜欢
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
相关资源
最近更新 更多