2012-12-30 62 views
2

我有一個neo4j圖形數據庫,我正在構建,並且需要能夠搜索由索引引用的節點上的全部或部分文本。下面是一個示例節點,我可以使用所謂的遊戲指數搜索:Neo4jClient C#QueryIndex搜索節點的全部或部分文本

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; 

此查詢但不返回任何東西。如果我修改這樣的查詢時,它會返回,但我希望能夠搜索的名稱屬性中的所有文本,無論是否有空格或不在文本:

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中工作應該是微不足道的。請讓我知道你可能有的任何建議。謝謝。

+0

這不是一個密碼問題,但lucene索引相關。我們必須通讀全文索引:http://lucene.apache.org/core/ – ulkas

+0

我創建了一個lucene索引並調整了我的查詢,如下面的答案。感謝您的評論。 –

回答

2

事實證明,搜索的所有文字是如此簡單:

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

這並不需要在所有的一個「*」字符,並像「馬里奧賽車」的名義將返回所有遊戲。我希望這可以幫助任何有同樣問題的人。