Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j:全文lucene遗留索引(node_auto_index)在迁移后不起作用_Neo4j_Lucene_Migration_Database Migration_Fuzzy Search - Fatal编程技术网

Neo4j:全文lucene遗留索引(node_auto_index)在迁移后不起作用

Neo4j:全文lucene遗留索引(node_auto_index)在迁移后不起作用,neo4j,lucene,migration,database-migration,fuzzy-search,Neo4j,Lucene,Migration,Database Migration,Fuzzy Search,使用从Neo4j 2.2.8成功迁移到3.0.4后,全文搜索无法按预期工作。模糊性不像以前那么模糊了 例如: START n=node:node_auto_index('name:(+Target~0.85)')匹配(n)返回n; 应该返回具有字段名称的节点,这些节点包含类似于“Target”的85%的工作 在匹配以下内容之前: 目标 目标v2 迁移后: 目标 为什么以及如何解决这个问题?原因是迁移后lucene节点的自动索引配置不正确。迁移工具可能不尊重它的配置,或者是不正确的 解决方案是正

使用从Neo4j 2.2.8成功迁移到3.0.4后,全文搜索无法按预期工作。模糊性不像以前那么模糊了

例如:

START n=node:node_auto_index('name:(+Target~0.85)')匹配(n)返回n;
应该返回具有字段
名称
的节点,这些节点包含类似于“Target”的85%的工作

在匹配以下内容之前:

  • 目标
  • 目标v2
  • 迁移后:

  • 目标

  • 为什么以及如何解决这个问题?

    原因是迁移后lucene
    节点的自动索引配置不正确。迁移工具可能不尊重它的配置,或者是不正确的

    解决方案是正确设置索引并重建它们

    步骤:

  • 检查您的
    /etc/neo4j/neo4j.conf
    是否启用了自动索引,并将键设置为要自动索引的字段:
  • 通过运行以下命令,检查
    节点\u自动\u索引
    配置是否正确:
  • neo4j shell-c'索引--获取配置节点\u自动\u索引'
    {
    “analyzer”:“org.apache.lucene.analysis.standard.StandardAnalyzer”,
    “提供者”:“lucene”,
    “to_lower_case”:“true”,
    “类型”:“全文”
    }
    
  • 如果它不符合您的要求,例如
    type
    不是
    fulltext
    ,则运行以下命令:
  • neo4j shell-c'索引--设置配置节点\自动\索引类型全文'
    neo4j shell-c'索引--将配置节点的自动索引设置为小写'
    neo4j shell-c'index--set-config节点_auto_index analyzer org.apache.lucene.analysis.standard.StandardAnalyzer'
    
  • 之后,您需要重新索引数据。根据
    dbms.auto_index.nodes.keys
    设置(
    name
    字段,在本例中),在数据集上运行以下密码:
  • 将(n)存在的(n.name)与(n)跳过0限制50000设置n.name=n.name匹配;
    将(n)存在的(n.name)与(n)跳过50000限制50000集合n.name=n.name匹配;
    将(n)存在的位置(n.name)与(n)跳过100000限制50000集合n.name=n.name匹配;
    // ...
    

    以下步骤将帮助您在Neo4j 3.0中设置全文lucene索引,并重新索引您的现有数据。

    我们可以通过远程托管的Neo4j和java配置来实现这一点吗?@AbdullahAlNoman我不确定您是否可以完成第1点)。其他的可能。我自己不使用Java驱动程序,但我的驱动程序不太高级。
    dbms.auto_index.nodes.enabled=true                                                                                                                                                                                 
    dbms.auto_index.nodes.keys=name