2016-12-22 1 views
3

neo4j auto index를 fulltext index로 사용하고 있습니다. 나는 사용자 노드에서 검색을 수행하고자하는 'fullName'속성을 가진 사용자 노드를 가지고 있습니다. 예 : 나는 fullName을 가진 4 명의 사용자를 다음과 같이 말합니다. Abc Jay, Jay Singh, Ajay Kumar, John Doe. 나는이 쿼리 작성했습니다 검색 일치율에 따라 노드를 반환하는 방법 neo4j 전체 텍스트 검색에서?

  • 제이 싱 (피지),
  • 아제 쿠마,
  • ABC 방송 제이 : 제이에 대한 사용자 검색 결과는 다음과 같은 순서로한다 그래서 내가 원하는 :

    START u=node:node_auto_index("fullName:*jay*") MATCH (u:User) 
    return distinct {firstName : u.firstName , lastName : u.lastName, fullName : u.fullName, profilePicture : u.profilePicture, id : u.id} as user 
    

    이 쿼리는 결과와 동일한 사용자를 제공하지만 임의의 순서로 원하는 순서대로 표시되지 않습니다. 이것을 성취하도록 도와 줄 수있는 사람은 누구입니까?

답변

1

따라서 위치를 찾는 가장 빠른 방법은 split을 사용하는 것입니다.

START u=node:node_auto_index("fullName:*jay*") 
MATCH (u:User) 
WITH distinct u 
RETURN {firstName : u.firstName , lastName : u.lastName, fullName : u.fullName, profilePicture : u.profilePicture, id : u.id} as user 
ORDER BY length(split(toLower(u.fullName,"jay")[0]); 
+0

고마워, 내 문제가 해결되었습니다. 바보 같은 실수는 u.fullName 뒤에 닫는 괄호 ')'를 써야합니다. 또한 검색 키워드가 둘 이상의 단어로 구성된 경우 어떻게됩니까? – user3542450