2013-08-02 2 views
2

나는 성, 성 속성을 가진 사용자를위한 노드가 있습니다. 이제 두 사이트의 두 속성에서 일부 값을 검색하려고합니다. 내가 설명해야만 해.사이퍼를 사용하여 퍼지 검색

FirstName LastName 
--------- -------- 
Manish  Pal 
Pal  Dharmesh 
Rajpal  Yadav 
sharma  shreepal 

지금 내가하는 노드의 FIRSTNAME을 검색 할 또는 '친구'를 포함 성. 이런 식으로 질의를 작성했습니다.

START users=node(*) 
WHERE (users.FirstName =~ '(?i)pal.*' OR users.LastName =~ '(?i)pal.*') 
RETURN users; 

그것은 나에게 단 2 노드를 제공하지만, 내가 뭔가 오류 다음 날주고있다이

START users=node(*) 
WHERE (users.FirstName =~ '(?i)*.pal.*' OR users.LastName =~ '(?i)*.pal.*') 
RETURN users; 

처럼하려고하면 나는 '친구'

가 포함되어 모든 노드를합니다.

"PatternSyntaxException"

지수 4 근처에 메타 문자 ''을 매달려 (? I) .ant.^*

준비된 참조 용 예제를 here으로 설정했습니다.

감사합니다.

답변

6

두 번째 쿼리에 잘못된 정규식 구문이 포함되어 있습니다. 위의 질의에 게시물에 '(?i)*.pal.*''(?i).*pal.*' : 나는 당신이

START users=node(*) 
WHERE (users.FirstName =~ '(?i).*pal.*' OR users.LastName =~ '(?i).*pal.*') 
RETURN users 

참고 게시물의 질의 차이를 의미 생각합니다. 별표 *을 의미합니다. [별표]는 0을 포함하여 임의의 횟수로 나타날 수 있습니다.. 그러나 (?i)은 정규식이 아니며 실제 표현식의 대소 문자를 무시하는 수정 자일뿐입니다. 나는 당신이 .*을 의미했다고 생각합니다. 정규 표현식 .은 임의의 문자와 일치하며, 별표는 임의의 문자가 임의의 횟수만큼 나타날 수있게합니다. 따라서 '(?i)*.pal.*' 말한다 모든 문자의 [사건을 무시] < 임의의 수 > < 모든 문자의 > < 임의의 수는 >

위의 쿼리가 나를 위해 네 개의 결과를 반환 정확한 문자 시퀀스 친구 :

users.FirstName | users.LastName 
--------------------------------- 
sharma   | shreepal 
Rajpal   | Yadav 
Pal    | Dharmesh  
Manish   | Pal 

네가 정확히 이해했다면 니가 원했던거야.

+0

나의 즐거움 :-) 대답이 맞다면, 그것을 받아 들여서 모든 사람들이이 문제를 해결할 수 있도록 할 수 있습니다. – khituras

+0

예. 사실입니다. 하지만 나는 stackoverflow의 일반 사용자가 아니므로 허용 된대로이 질문의 상태를 변경할 수 있습니다. 제발 날 안내해 주시겠습니까? 그래서, 다음에 나는 할 것입니다. 감사합니다 –

+0

물론 : 답변 텍스트의 왼쪽에는 두 번째 요소가 있습니다. 첫째, 현재 답변 상태 (이 대답은 현재 1)와 답변을 위 또는 아래로 투표하는 화살표입니다. 이 투표 국가 아래에서, 당신은 질문 기자로서 - 빈 확인 표시가 보일 것입니다. 만족스러운 답을 찾았다면이 체크 표시를 클릭하면 녹색으로 변합니다.그런 다음 각 대답을 수락했습니다. 답이 여러 개인 경우에는 한 가지 대답 만 수락 할 수 있습니다. – khituras