2

構築中の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();

Gameエンティティクラスは次のとおりです。

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

    public string Description { get; set; }

}

私はCypherを初めて使用し、SQLのLIKE句に相当するものをほとんど探しています。クエリが正しくビルドされ、Neo4jのコンソールで実行されるようになったら、Neo4jClientで動作するようになるのは簡単なはずです。何か提案があれば教えてください。ありがとう。

4

1 に答える 1

2

すべてのテキストの検索は次のように簡単でした。

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

これは「*」文字をまったく必要とせず、「マリオカート」のような名前のすべてのゲームを返します。これが同じ問題を抱えている人に役立つことを願っています。

于 2012-12-30T17:05:13.187 に答える