Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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
Lucene或Python:选择两者";希拉里·克林顿;及;“希拉里·克林顿”;姓名条目_Python_Regex_Neo4j_Lucene - Fatal编程技术网

Lucene或Python:选择两者";希拉里·克林顿;及;“希拉里·克林顿”;姓名条目

Lucene或Python:选择两者";希拉里·克林顿;及;“希拉里·克林顿”;姓名条目,python,regex,neo4j,lucene,Python,Regex,Neo4j,Lucene,假设我有一些自由格式的姓名条目,其中一些是“姓,名”格式的,其他的是“姓,名”(例如“Bob MacDonald”和“MacDonald.Bob”都存在) 据我所知,Lucene索引不允许在句子的开头使用通配符,所以我可以通过什么方式找到两者。这是针对neo4j和py2neo的,因此欢迎使用lucene模式匹配或python正则表达式匹配的解决方案。您可以使用或吗“Hilary Clinton”或“Clinton,Hilary”?我不熟悉neo4j或lucene,但我想我会提供一个Python正

假设我有一些自由格式的姓名条目,其中一些是“姓,名”格式的,其他的是“姓,名”(例如“Bob MacDonald”和“MacDonald.Bob”都存在)


据我所知,Lucene索引不允许在句子的开头使用通配符,所以我可以通过什么方式找到两者。这是针对neo4j和py2neo的,因此欢迎使用lucene模式匹配或python正则表达式匹配的解决方案。

您可以使用
吗<代码>“Hilary Clinton”或“Clinton,Hilary”

我不熟悉neo4j或lucene,但我想我会提供一个Python正则表达式解决方案,我刚才在这个问题上找到了这个解决方案:

基本上,你可以调整他的答案以适应这个特殊的问题:你需要一个名字和一个姓氏,但你不知道顺序。它们可能在字符串中有空格或逗号

这是我想出的正则表达式:
(?:\s?Hilary()|\s?Clinton(),?){2}

它测试名字前面是否有空格,姓氏前面是否有空格,后面是否有逗号。后面的空括号表示如果满足条件,它将返回匹配,{2}表示它需要两个匹配项(名字和姓氏)

用python测试它:

import re
t1 = 'Hilary Clinton'
t2 = 'Clinton, Hilary'
re.search(r'(?:\s?Hilary()|\s?Clinton(),?){2}', t1)
re.search(r'(?:\s?Hilary()|\s?Clinton(),?){2}', t2)

双方都返回一个匹配。希望这有帮助。

所以。。。为什么不做两个查询呢?因为我正在构建一个通用的查询,我希望人们能有一个干净的第一眼。我在Lucene中看到了这一点,但它似乎不适用于neo4j查询。我试着这样做:start n=node:node_auto_index(“Name:Hilary Clinton”或“Name:Clinton,Hilary”)返回n;不知道如何正确地转义它,但它是正确的,但是您必须将
放在引号内。类似于“姓名:'Hilary Clinton'或姓名:'Hilary Clinton'”