我正在使用Joan3rest API,我有名为客户的节点,它有像名称等属性。我需要获得客户名称的搜索结果,例如,我应该为我的输入“Neo4j”.how获得名称"john“的结果,以实现模糊搜索,以获得我想要的结果。
提前感谢
发布于 2016-01-03 15:42:33
首先,我想让你知道,如果你正在使用Neo4j 3.x,那么3.x目前还处于测试阶段,还不被认为是稳定的。
在Neo4j中实现模糊搜索有两种选择。您可以使用legacy indexes来实现基于Lecene的索引。这应该可以提供Lucene所能做的任何事情,尽管您可能需要做更多的工作。您还可以实现自己的unmanaged extension,这将允许您更直接地使用Lucene。
也许更简单的替代方案是将elasticsearch与Neo4j结合使用,并让elasticsearch执行全文索引。您可以看看neo4j.com上的Neo4j and ElasticSearch页面。在那里,它们提供了到GitHub repository的链接,这是Neo4j的一个插件,可以使用来自Neo4j的数据自动更新ElasticSearch,并为模糊查询图形提供端点。还有一个关于如何做到这一点的video tutorial。
发布于 2018-07-17 03:19:10
您将不得不尝试使用https://neo4j.com/developer/kb/how-to-perform-a-soundex-search/,在本例中将会起作用。如果您的输入是Joan,您将不会得到John作为响应,除非您只提供jo作为输入,在其中您将获得两者。为了得到你想要的东西,你必须使用soundex搜索。
发布于 2016-01-07 07:11:32
退一步说,你试图用模糊匹配解决的问题是什么?
我的经验是,拼写错误和打字错误远没有你想象的那么常见,只要有可能,人类就更喜欢精确匹配。如果没有精确匹配(通常只是缺少单词之间的空格),这是使用拼写检查器的好时机,这也是模糊匹配应该发挥作用的地方。
此外,您的示例将"joan“与"john”匹配,但像"joanie“这样的同义词会更有用。如果你有一个庞大的内容语料库要处理,你也许能够提取一些关系,使用模糊和机器学习来识别"joanne“和"joni”作为可能的同义词,然后将其提交给人类管理员。"Jon“看起来像一个相关的名字,但它不是,而"jo”甚至"nonie“可能是这些组中的昵称,也可能不是。
https://stackoverflow.com/questions/34569696
复制相似问题