2014-10-08 4 views
5

신입생 Neo4jSolr/Lucene입니다. Neo4j에서 lucene 쿼리를 사용할 수 있다는 것을 읽었습니다. 어떻게 작동합니까? Neo4j에서 lucene 쿼리를 사용하는 것은 무엇입니까?Neo4j와 lucene의 작동 원리

또한 제안이 필요합니다. 데이터 검색 및 분석을위한 애플리케이션을 작성해야합니다. which might help me Neo4j Or Solr?

+0

아마도 구체적인 사용 사례에 대해 더 자세히 설명해야합니다. 당신은 실제로 무엇을 성취하고 싶습니까? –

+0

좋아요, 저는 직원의 정보 - 그의 이름, 집 주소, 회사 주소, 회사 이름, ph no 등이 있습니다. 응용 프로그램은 이름/(h/c) 주소와 같은 다른 기준으로 검색 할 수있는 검색 페이지를 제공합니다. 결과는 직원이 검색 기준과 일치하고 직원이 검색 기준과 관련이 있습니다 (예 : 주소 또는 ..에 따라 다름) 점수는 결과를 주문하는 데 적합해야합니다. – Shri

답변

10

Neo4J는 lucene을 legacy indexing의 일부로 사용합니다. 현재 Neo4J는 노드에 레이블을 만드는 것과 노드 속성에 대한 색인과 같은 여러 종류의 색인을 지원합니다.

그러나 neo4j가 이러한 새로운 기능을 지원하기 전에 주로 색인 생성을 위해 Lucene을 사용했습니다. 대부분의 개발자는 lucene의 쿼리 구문을 사용하여 사이퍼 쿼리 내의 노드를 찾을 수 있도록 특정 노드 속성에 lucene 인덱스를 만듭니다.

예를 들어, created an index according to the documentation 경우에는 다음과 같이 특정 값에 대한 인덱스를 검색 할 수 있습니다 :

IndexHits<Node> hits = actors.get("name", "Keanu Reeves"); 
Node reeves = hits.getSingle(); 

그것은 실제로 발견을하고있어 배후 루씬입니다. 사이퍼에서

, 그것은 다음과 같습니다이 경우

start n=node:node_auto_index('name:M* OR name:N*') 
return n; 

, 당신은 "M"과 중 하나를 시작하는 이름의 속성이 모든 노드에 대해 특정 인덱스를 검색하거나하고에 " 엔". 작은 따옴표 표현의 내부에는 the lucene query syntax에 따른 쿼리 만 있습니다.

좋아요, 그렇다면 Neo4J에서 lucene을 사용하는 방법입니다. 최근 버전에서는 lucene의 강점 인 풀 텍스트 인덱싱에만 "레거시 인덱스"를 사용합니다. 방금 빠른 평등 검사 (name = "Neo")를 원하면 regular neo4j schema indexes을 사용합니다.

Solr의 경우 neo4j와 함께 사용되는 것을 보지 못했을 것입니다. 아마도 누군가가 뛰어 들어 반례를 제공 할 것이지만 일반적으로 저는 Solr이 큰 lucene 색인 위에 실행되는 것으로 생각합니다. neo4j의 경우, 중간에 종류가 있습니다. Solr을 실행하는 것이 적합 할 지 확신하지 못합니다.

데이터 검색 및 분석을 위해 애플리케이션을 작성해야하는 경우 애플리케이션 및 원하는 작업에 따라 Neo4J 또는 Solr이 도움이 될 수 있습니다. 일반적으로 그래프를 표현하고 검색해야 할 때 neo4j를 사용하십시오. 많은 양의 텍스트 문서를 구성하고 검색해야 할 때 Solr을 사용하십시오.

+0

필자는 현대 색인 생성을 위해 Lucene을 여전히 사용하고 있다는 인상하에 있었지만 사용자를 위해 모든 색인 생성/삭제 및 쿼리를 처리합니다. – subvertallchris

+0

어느 것이 더 효율적입니까/더 빠릅니까? lucene 색인 (레거시 색인) 또는 스키마 (노드)를 작성하는 것입니까? – Shri

+2

"레거시 색인"은 유산입니다. 평등 비교가 필요한 경우 언급 한대로 스키마 인덱스를 사용하십시오. 사이퍼 쿼리가 계획을 수립 할 때 스키마 인덱스를 기반으로하는 선택의 폭이 넓어지고 lucene 인덱스가 필요하지 않기 때문에 더 빠릅니다.자, 풀 텍스트가 필요하다면, neo4j는 또 다른 대안을 제공하지 않습니다. 그래서 당신은 Lucene 인덱스 인 IMHO를 고수해야합니다. 당신이하고 싶은 일에 달려 있습니다. – FrobberOfBits