【问题标题】:Neo4jClient C# QueryIndex search full or partial text of nodesNeo4jClient C# QueryIndex 搜索节点的全部或部分文本
【发布时间】:2012-12-30 16:24:58
【问题描述】:

我在 neo4j 中有一个正在构建的图形数据库,并且需要能够在索引引用的节点上搜索全部或部分文本。下面是一个示例节点,我可以在其中使用名为 Game 的索引进行搜索:

Node[1]{Type:"Game",Name:"Super Mario Kart",Description:"First Mario Kart Game in the series",Id:"a3b11cd8-b179-4775-a69e-ddcdd7b8369e"}

这是我正在使用的 Cyper 查询:

START game=node:Game('Name:*Super Mario*') RETURN game;

但是,此查询不返回任何内容。如果我像这样修改查询,它会返回,但我希望能够搜索 Name 属性中的所有文本,无论文本中是否有空格:

START game=node:Game('Name:*Super*') RETURN game;

这是我用于查询索引的 C# 代码:

Node<Game> game = client.QueryIndex<Game>("Game", IndexFor.Node, "Name:*" + name + "*").First();

这是游戏实体类:

public class Game
{
    public string Name { get; set; }

    public string Description { get; set; }

}

我是 Cypher 的新手,主要是在寻找与 SQL 的 LIKE 子句等效的内容。一旦我在 Neo4j 的控制台中正确构建并运行了查询,在 Neo4jClient 中开始工作应该是微不足道的。请让我知道您可能有的任何建议。谢谢。

【问题讨论】:

  • 这不是密码问题,而是与 lucene 索引有关。必须阅读全文索引文档:lucene.apache.org/core
  • 我创建了一个 lucene 索引并调整了我的查询,如下面的回答所示。感谢您的评论。

标签: c# neo4j lucene neo4jclient


【解决方案1】:

原来搜索所有文本就这么简单:

START game=node:Game('Name: "Mario Kart"') RETURN game;

这根本不需要“*”字符,并返回名称为“Mario Kart”的所有游戏。我希望这对遇到同样问题的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-03
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多