我正在使用Neo4j.rb和搜索踢一个红宝石rails应用程序。
我有以下课程
class NeoUser
include Neo4j::ActiveNode
searchkick
property :first_name, type: String
property :last_name, type: String
property :email, type: String
has_many :out, :neo_users, rel_class: Following
end在rails控制台中,我这样做:
NeoUser.reindex然后:
result = NeoUser.search "*"我得到一个空数组:即result.size给我0
我的Neo4j数据库中确实有数据运行在localhost上:7000
我让我的elasticsearch服务器在本地主机上运行:9200
NeoUser.find_by()确实给出了正确的结果,因此我无法理解为什么搜索函数会失败。
有什么想法吗?
编辑:
NeoUser.reindex的输出:
CYPHER 36ms MATCH (n:`NeoUser`) RETURN n ORDER BY n.uuid LIMIT {limit_1000} | {:limit_1000=>1000}
=> true 版本
neo4j (5.2.9)
新4j-核心(5.1.6)
弹性搜索(1.0.13)
elasticsearch-api (1.0.13)
elasticsearch-运输(1.0.13)
搜索(0.9.1)
这与我在我的ubuntu机器中安装了elasticsearch版本1.7.2有什么关系吗?
编辑2 :
我看到,当我使用控制台创建数据时,搜索函数能够返回数据。
因此,我猜searchkick无法访问我在本地主机9200中运行的原始neo4j数据库。
但是NeoUser.all确实返回了我的所有数据节点,所以我如何告诉searchkick使用特定的数据库,或者还有其他问题?
发布于 2015-10-14 07:26:43
太奇怪了。我试着在本地复制,但对我来说很管用。你的neo4j/neo4j-core/searchkick版本是什么?
一种建议是,您可以尝试将您的searchkick行放在属性下面,以防它需要看到它们来搜索。
此外,当您执行NeoUser.reindex时,您会看到什么样的输出?您有多少NeoUser节点?
发布于 2022-10-01 03:47:46
我也有同样的问题,结果是我在搜索3个字符时得到了零的结果,但是如果我输入5个字符,我就会得到结果。我假设这是默认的ES配置。也许这能节省一些时间。
https://stackoverflow.com/questions/33117288
复制相似问题