0
votes

I test find node by query refer to neo4j manual(http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html<22.10.10. Find node by query>, but I have some troubles, I created two nodes, one index. Then I add two nodes into index. I can't find anything when I query node by lucene query.

This is my test code:

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
Which lib are you using? If it's your own, can you share the code and not just the test? - Eve Freeman
I've never used neo4j (or heard about it for that matter), but with some of the other "Lucene servers" (assuming that's what neo4j is) you need to flush the indexes (or wait X (milli)seconds) before the data will show up in queries. - Ask Bjørn Hansen
hi @WesFreeman source code link: github.com/innovationturbo/graphdb/blob/master/ext.go ,you can review it. - david

1 Answers

0
votes

Try to use an index key without spaces. That makes your live easier.

Then you actually have to use the correct index key that you stored data under in your lucene query:

luceneQuery := "some_key:some*"

if you used

indexKey := "some_key"

before. Not as you did: luceneQuery := "indexKey:some*"