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
Java NEO4j:搜索密码查询的优化_Java_Neo4j_Cypher - Fatal编程技术网

Java NEO4j:搜索密码查询的优化

Java NEO4j:搜索密码查询的优化,java,neo4j,cypher,Java,Neo4j,Cypher,我们正在使用neo4j密码查询在我们的网站上进行搜索。所以,除了查询优化之外,一切都很顺利。我们得到了搜索结果,但并不是我们所期望的那样,可能是缺乏关于密码查询的经验和全面知识 在文本框中,搜索字符串在键向上时发送到查询 处理程序意味着在输入每个字母时,它将执行查询。喜欢 例如,v然后a像这样,直到我们进入太空 将其视为一个字符串,结果将相应显示,但 问题是,当我们进入空格,开始写字母,然后又会形成一个字符串,结果会非常混乱 示例: 查询1:MATCH(n:user)似乎您应该计算匹配的数量并以

我们正在使用neo4j密码查询在我们的网站上进行搜索。所以,除了查询优化之外,一切都很顺利。我们得到了搜索结果,但并不是我们所期望的那样,可能是缺乏关于密码查询的经验和全面知识

在文本框中,搜索字符串在键向上时发送到查询 处理程序意味着在输入每个字母时,它将执行查询。喜欢 例如,v然后a像这样,直到我们进入太空 将其视为一个字符串,结果将相应显示,但 问题是,当我们进入空格,开始写字母,然后又会形成一个字符串,结果会非常混乱

示例:


查询1:
MATCH(n:user)似乎您应该计算匹配的数量并以此排序

MATCH (n:user)
WITH n, size([m in split(n.username, ' ') WHERE m STARTS WITH 'vartika' OR m STARTS WITH 'jain']) AS matches
RETURN n.username
ORDER BY matches DESC
我删除了
[:userinterestattag]
关系和
标记
节点,因为您没有在查询中使用它

电影图表中的示例:

MATCH (p:Person)
WITH p, size([x IN split(p.name, ' ') WHERE x STARTS WITH 'Tom' OR x STARTS WITH 'Hanks']) AS matches
RETURN p.name, matches
ORDER BY matches DESC
LIMIT 5

╒════════════╤═══════╕
│p.name      │matches│
╞════════════╪═══════╡
│Tom Hanks   │2      │
├────────────┼───────┤
│Tom Cruise  │1      │
├────────────┼───────┤
│Tom Skerritt│1      │
├────────────┼───────┤
│Tom Tykwer  │1      │
├────────────┼───────┤
│Keanu Reeves│0      │
└────────────┴───────┘

但实际上,您应该将它们的名字和姓氏存储在单独的属性中,为它们编制索引,并在这些索引属性上使用以
开头的

似乎您应该计算匹配的数量并按此排序

MATCH (n:user)
WITH n, size([m in split(n.username, ' ') WHERE m STARTS WITH 'vartika' OR m STARTS WITH 'jain']) AS matches
RETURN n.username
ORDER BY matches DESC
我删除了
[:userinterestattag]
关系和
标记
节点,因为您没有在查询中使用它

电影图表中的示例:

MATCH (p:Person)
WITH p, size([x IN split(p.name, ' ') WHERE x STARTS WITH 'Tom' OR x STARTS WITH 'Hanks']) AS matches
RETURN p.name, matches
ORDER BY matches DESC
LIMIT 5

╒════════════╤═══════╕
│p.name      │matches│
╞════════════╪═══════╡
│Tom Hanks   │2      │
├────────────┼───────┤
│Tom Cruise  │1      │
├────────────┼───────┤
│Tom Skerritt│1      │
├────────────┼───────┤
│Tom Tykwer  │1      │
├────────────┼───────┤
│Keanu Reeves│0      │
└────────────┴───────┘

但实际上,您应该将它们的名字和姓氏存储在单独的属性中,为它们编制索引,并在这些索引属性上使用
开头。

您想添加一些业务规则来定义结果的排序方式。你应该从写下这些规则开始,而不仅仅是说“当前的顺序(实际上是在你的查询2中定义的)不满足我们”:也许你想通过减少子匹配的数量来得到结果,或者可能是其他原因。你甚至可以尝试实现它们。。。此外,随着用户数量的增长,在查询中拆分用户名的效率将不高,它将需要扫描所有用户,加载属性,拆分它,进行比较,当您可以从索引中获益时。可能我需要更多地研究密码查询。无论密码如何,您应该指定预期结果的排序方式。然后你可以考虑实现它。我希望vartika jain在顶部,下面所有其他结果不是规范,这是一个例子。为什么这应该是第一个结果?因为您正在搜索多个术语,并且希望首先得到匹配术语最多的结果?一旦定义了它,就可以对数据建模或相应地编写查询。但是责任在你身上,所以没有人来为你编写规范或应用程序。重新表述您的问题,包括相关元素、您尝试过的内容等。您希望添加一些业务规则来定义结果的排序方式。你应该从写下这些规则开始,而不仅仅是说“当前的顺序(实际上是在你的查询2中定义的)不满足我们”:也许你想通过减少子匹配的数量来得到结果,或者可能是其他原因。你甚至可以尝试实现它们。。。此外,随着用户数量的增长,在查询中拆分用户名的效率将不高,它将需要扫描所有用户,加载属性,拆分它,进行比较,当您可以从索引中获益时。可能我需要更多地研究密码查询。无论密码如何,您应该指定预期结果的排序方式。然后你可以考虑实现它。我希望vartika jain在顶部,下面所有其他结果不是规范,这是一个例子。为什么这应该是第一个结果?因为您正在搜索多个术语,并且希望首先得到匹配术语最多的结果?一旦定义了它,就可以对数据建模或相应地编写查询。但是责任在你身上,所以没有人来为你编写规范或应用程序。重新表述您的问题,包括相关元素、您尝试过的内容等。由于此操作未通过索引优化,我将添加一个预过滤器,如:MATCH(p:Person),其中p.name包含“Tom”,它将使用索引查找初始集。由于此操作未通过索引优化,我将添加一个预过滤器,如:MATCH(p:Person)其中p.name包含“Tom”,它将使用索引查找初始集。