具有特殊字符的neo4j全文索引搜索

具有特殊字符的neo4j全文索引搜索,neo4j,cypher,fulltext-index,Neo4j,Cypher,Fulltext Index,我们使用的是neo4j版本4.1.1, 我们有一个表示对象结构的图 我们支持使用节点进行翻译,对象和翻译节点之间的连接是对象名称和描述。 例如: (n:object)-[r:Translation]-(:ru) 表示关系r中的对象n的名称和描述是俄语。 为了按名称和描述进行搜索,我们实现了如下全文索引: 调用db.index.fulltext.createRelationshipIndex(“TranslationRelationshipIndex”,[“Translation”],[“Na

我们使用的是neo4j版本4.1.1, 我们有一个表示对象结构的图
我们支持使用节点进行翻译,对象和翻译节点之间的连接是对象名称和描述。
例如:
(n:object)-[r:Translation]-(:ru)
表示关系r中的对象n的名称和描述是俄语。
为了按名称和描述进行搜索,我们实现了如下全文索引:
调用db.index.fulltext.createRelationshipIndex(“TranslationRelationshipIndex”,[“Translation”],[“Name”,“Description”],{最终一致:“true”})

我们还支持搜索项目。为了做到这一点,我们使用索引进行查询,我们有“UFO41.SI01V03”这样的名称:
调用db.index.fulltext.queryRelationships('TranslationRelationshipIndex','*FO41.SI0*)产生关系,得分

但是对于如上所示的名称([0-9.*),不会返回任何结果
而返回“ab.or”等名称的结果

有人知道如何使它工作吗?我已经尝试了所有46个可用的分析仪。 我知道我们只需使用
match()-[r]-()就可以解决它,其中r.Name包含“”
但是我们更喜欢使用更有效的索引来解决这个问题

注意安全! 先谢谢你


P.S.如果需要的话,我可以提供几行来在本地重新创建它。只需询问。< /P> < P>分析器可能会识别不同的词,如<代码> AB或< /C> >不同于<代码> ab.Or123,并将它们视为第一种情况下的单个令牌和第二种情况下的两个令牌。

除了创建自己的分析器之外,没有任何分析器能够真正满足您的需求

但是,您可以将查询中的
替换为简单的
,例如:

CALL db.index.fulltext.queryNodes('Test', replace("*FO41.SI0*", ".", " AND "))
将返回您正在查看的结果


用于创建自己的分析器的资源: