首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在linux上Neo4j索引查询不返回结果,而在macOS上返回结果?

为什么在linux上Neo4j索引查询不返回结果,而在macOS上返回结果?
EN

Stack Overflow用户
提问于 2013-11-01 03:02:36
回答 1查看 69关注 0票数 1

我有一个使用Jruby并嵌入neo4j数据库的Rails应用程序。在JRuby10.8.5下进行开发时,使用MacOS 1.7.4 (JDK1.7.0),在通过ActiveRecord验证了节点确实存在之后,我发出了一个索引查询来检索一个具有键值对"name: bento && type: services“的节点。

当我在CentOS 6.4上运行相同的序列时,索引查询不返回任何结果。

我的问题是,为什么我的索引查询不能在CentOS 6.4上工作,而它能在MacOS 10.8.5上工作?

以下是MacOS的控制台会话文本,后面是CentOS的控制台会话文本:

====================================================

代码语言:javascript
复制
[On MacOS 10.8.5, using Jruby 1.7.4 (JDK 1.7.0), using Neo4j Community 1.9.1]

irb(main):001:0> # verify that node with name: bento && type: services exists

irb(main):002:0> Vertex.all.select{|v| v.name == "bento" && v.type=="services"}[0].name
=> "bento"
irb(main):003:0> Vertex.all.select{|v| v.name == "bento" && v.type=="services"}[0].type
=> "services"

irb(main):004:0> # Attempt to retrieve that same node using Neo4j Lucene Index Manager

irb(main):005:0> thisgraph =  Neo4j.db.graph
=> #<Java::OrgNeo4jKernel::EmbeddedGraphDatabase:0x662a6d5b>
irb(main):006:0> index_manager = thisgraph.index
=> #<Java::OrgNeo4jKernel::IndexManagerImpl:0x77a89d44>
irb(main):007:0> node_exact_index_manager = index_manager.for_nodes("Node_Exact")
=> #<Java::OrgNeo4jIndexImplLucene::NodeIndex:0xb55bed2>
irb(main):008:0> service = node_exact_index_manager.query("name: bento && type: services").getSingle()
=> #<Java::OrgNeo4jKernelImplCore::NodeProxy:0x2666829a>
irb(main):009:0> service[:name]
=> "bento"
irb(main):010:0> service[:type]
=> "services"

===========================
[On CentOS 6.4, using Jruby 1.7.4 (JDK 1.7.0), using Neo4j Community 1.9.1 ]
# verify that node with name: bento && type: services exists
irb(main):008:0> Vertex.all.select{|v| v.name == "bento" && v.type=="services"}[0].name
=> "bento"
irb(main):009:0> Vertex.all.select{|v| v.name == "bento" && v.type=="services"}[0].type
=> "services"

# Attempt to retrieve that same node using Neo4j Lucene Index Manager

irb(main):011:0> thisgraph =  Neo4j.db.graph
=> #<Java::OrgNeo4jKernel::EmbeddedGraphDatabase:0x1acf245f>
irb(main):012:0> index_manager = thisgraph.index
=> #<Java::OrgNeo4jKernel::IndexManagerImpl:0x55fcebbe>
irb(main):013:0> node_exact_index_manager = index_manager.for_nodes("Node_Exact")
=> #<Java::OrgNeo4jIndexImplLucene::NodeIndex:0x20bcb45a>
irb(main):014:0> service = node_exact_index_manager.query("name: bento && type: services").getSingle()
=> nil

=========================

MacOS和CentOS上的两个数据库和索引是相同的。另外,我使用Luke查看了两个索引(一个在MacOS上,另一个在CentOS上),并验证了我正在查询的节点确实可以使用查询字符串"name: bento && type: services“检索到。

刚刚证实,我们在RedHat上看到的行为与在CentOS上看到的相同

如果您能回答为什么在CentOS上查询没有任何结果,我将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-11-02 02:14:53

获取节点索引的语句使用"Node_Exact“作为索引名称参数。

代码语言:javascript
复制
node_exact_index_manager = index_manager.for_nodes("Node_Exact")

实际的索引被命名为Node_exact,小写e。OsX显然将索引名称视为不区分大小写,而Linux并非如此( CentOS和RedHat都是如此)。

一旦索引名称参数被更正为"Node_exact“,结果就会正确显示。

代码语言:javascript
复制
node_exact_index_manager = index_manager.for_nodes("Node_exact")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19714630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档