Neo4j全文索引设置

时间:2015-01-18 09:50:19

标签: neo4j cypher

我正在按照迈克尔http://jexp.de/blog/2014/03/full-text-indexing-fts-in-neo4j-2-0/的本教程来设置我的全文索引。但是我遇到了几个问题。

我的PC(Windows)上运行了一个节点服务器。无论如何,我在localhost上运行了一些使用jQuery的东西。所以我使用jQuery在chrome控制台中进行ajax post调用。

步骤1:

 $.ajax({
    url: 'http://localhost:7474/db/data/index/node/',
    type: 'post',
    data: JSON.stringify({'name': 'NewIndex', 'config':{'type':'fulltext', 'provider':'lucene', 'to_lower_case': 'true'}}),
    headers: {
        "Content-Type": 'application/json',
        "Accept": 'application/json; charset=UTF-8'
    },
    dataType: 'json',
    success: function (data) {
        console.log(data);
    }
});

这很有效!所以它创建了一个索引。接下来如教程所示,我设置了这些设置并重新启动了服务器:

第2步:

node_auto_indexing=true
node_keys_indexable=description

接下来,我使用以下内容重置属性

第3步:

MATCH (n:anodelabel)
WHERE has(n.description)
SET n.description=n.description

接下来,我尝试在浏览器localhost:7474中查询它。

第4步:

START anodelabel=node:NewIndex("description:word*")
MATCH (o:anodelabel)<-[r:AUTHOR]-(user)
RETURN o LIMIT 10

但这是一个空集。所以我尝试发布一个新项CREATE (n:anodelabel {description: "needs to work"})并再次使用密码调用。再一次空集。

3 个答案:

答案 0 :(得分:0)

在步骤4中,索引返回值是节点,而不是节点标签。试试这个:

START n=node:NewIndex("description:word*")
MATCH (n)<-[r:AUTHOR]-(user)
RETURN n LIMIT 10

答案 1 :(得分:0)

在第一步中,您应该使用node_auto_index代替。

也在你的最后一步。

只有这样,您的节点才会自动添加到该索引中。

此外,您的陈述不正确,请使用以下内容:

  1. 从FTS
  2. 查找文本节点
  3. 确保他们的标签和匹配模式
  4. 返回数据
  5. START o=node:NewIndex("description:word*")
    MATCH (o:AnodeLabel)<-[r:AUTHOR]-(user)
    RETURN user LIMIT 10
    

答案 2 :(得分:-3)

MATCH (n:anodelabel)
WHERE has(n.description)
SET n.description=n.description