【问题标题】:Neo4j fulltext index setupNeo4j 全文索引设置
【发布时间】:2015-01-18 09:50:18
【问题描述】:

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

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

第一步:

 $.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"}) 并再次使用密码调用。又是一个空集。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

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

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

    【讨论】:

    • 它给了我这个错误:Cannot match on a pattern containing only already bound identifiers (line 2, column 1) "MATCH (n)"
    • 你运行的是什么版本的 neo4j?我使用的是 2.1.5,这个查询对我有用。另外,您使用的是相同的确切查询吗?
    • 我的错,我刚刚做了START n=node:NewIndex("description:word*") MATCH (n) RETURN n LIMIT 10,它给了我错误(不知道为什么)......但是即使使用了你建议的确切查询,我仍然得到一个空集:(
    • 错误是因为MATCH 子句没有额外的工作要做。你本可以消除MATCH (n),它应该可以工作。您实际上是否有具有包含“word”字符串的description 属性值的节点?此外,这些节点中是否有传入:AUTHOR 关系?
    • 是的,很确定。为了确认这一点,我只用一个词创建了另一个节点:CREATE (n:anodelabel {"description":"testword"})&lt;-[:AUTHOR]... ...我可以通过 MATCH (n:anodelabel)START n=node:NewIndex("description:testword*") MATCH (n)<-[r:AUTHOR]-(user) RETURN n LIMIT 10 ...这仍然是一个空集。
    【解决方案2】:

    在您的第一步中,您应该改用node_auto_index

    最后一步也是如此。

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

    另外你的说法不正确,请使用如下内容:

    1. 从 FTS 中查找文本节点
    2. 确保他们的标签和匹配模式
    3. 返回数据

    .

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

    【讨论】:

      【解决方案3】:
      MATCH (n:anodelabel)
      WHERE has(n.description)
      SET n.description=n.description
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多