如何通过Go中的REST查询查找节点

时间:2013-04-10 23:19:45

标签: rest go neo4j

我通过查询测试查找节点参考neo4j手册(http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html< 22.10.10。通过查询>查找节点,但我有一些麻烦,我创建了两个节点,一个索引。然后我将两个节点添加到索引中。当我通过lucene查询查询节点时,我找不到任何东西。

这是我的测试代码:

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 个答案:

答案 0 :(得分:0)

尝试使用不带空格的索引键。这让你的生活更轻松。

然后你实际上必须使用你在lucene查询中存储数据的正确索引键

luceneQuery := "some_key:some*"

如果您使用

indexKey := "some_key"

之前。不像你那样:luceneQuery := "indexKey:some*"