2013-04-10 92 views
0

我查詢的查找節點參考neo4j手冊(http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html < 22.10.10。通過查詢查找節點>,但我有一些麻煩,我創建了兩個節點,一個索引。然後我將兩個節點添加到索引中。當我通過lucene查詢查詢節點時,找不到任何東西。如何通過REST查詢查找節點Go

這是我的測試代碼:

func TestFindNodeByQuery(t *testing.T) { 
    log.Println("Start testing FindNodeByQuery") 
    session, err := Dial(settingFile) 
    if err != nil { 
     t.Error(err) 
    } 
    log.Println("Create Index,type lucene") 
    indexName := "testIndex" 
    indexType := "fulltext" 
    indexProvider := "lucene" 
    err = session.CreateNodeIndexWithConf(indexName, indexType, indexProvider) 
    if err != nil { 
     t.Error(err) 
    } 
    log.Println("create two nodes") 
    data := map[string]string{ 
     "name": "test01", 
     "key01": "value01", 
    } 
    node1, err := session.CreateNode(data) 
    if err != nil { 
     t.Error(err) 
    } 
    data["name"] = "test02" 
    node2, err := session.CreateNode(data) 
    if err != nil { 
     t.Error(err) 
    } 
    indexKey := "some key" 
    indexValue := "some value" 
    _, err = session.AddNodeToIndex(indexKey, indexValue, indexName, node1.ID) 
    if err != nil { 
     t.Error(err) 
    } 
    _, err = session.AddNodeToIndex(indexKey, indexValue, indexName, node2.ID) 
    if err != nil { 
     t.Error(err) 
    } 
    luceneQuery := "indexKey:some*" 
    results, err := session.FindNodeByQuery(indexName, luceneQuery) 
    // results, err := session.FindNodeByMatch(indexName, indexKey, indexValue) 
    log.Println(len(results)) 
    for _, result := range results { 
     log.Println(result) 
    } 
    log.Println("Clean data...") 
    err = session.DeleteNode(node1.ID) 
    if err != nil { 
     t.Error(err) 
    } 
    err = session.DeleteNode(node2.ID) 
    if err != nil { 
     t.Error(err) 
    } 
    err = session.DeleteNodeIndex(indexName) 
    if err != nil { 
     t.Error(err) 
    } 
    log.Println("data cleaned") 
    log.Println("FindNodeByQuery test finished!") 

} 
+1

你在使用哪個庫?如果是你自己的,你能分享代碼而不僅僅是測試嗎? – 2013-04-11 05:44:46

+0

我從來沒有用過neo4j(或者聽說過這個),但是對於其他一些「Lucene服務器」(假設這就是neo4j),你需要刷新索引(或者等待X(毫秒)秒)數據將顯示在查詢中。 – 2013-04-11 06:11:30

+0

hi @WesFreeman源代碼鏈接:https://github.com/innovationturbo/graphdb/blob/master/ext.go,你可以查看它。 – david 2013-04-11 10:24:01

回答

0

嘗試使用索引鍵無空格。這讓你的生活更輕鬆。

那麼你確實有使用正確的索引鍵您在Lucene的查詢下存儲的數據:

luceneQuery := "some_key:some*"

,如果你之前使用

indexKey := "some_key"

。不像你所做的那樣:luceneQuery := "indexKey:some*"

+0

謝謝你提醒我,我已經解決了我的問題! – david 2013-04-11 12:50:59