2014-12-01 4 views
2

DB에서 Solr 색인으로 중첩 엔티티를 가져 오는 방법은 무엇입니까? 몇 가지 이유로 나는 문서를 단일 문서로 평평하게하고 싶지 않습니다. schema.xmldata-config.xml에 무엇을 써야합니까? Solr 4.10을 사용하고 있습니다.SOLR에서 중첩 된 문서의 색인 만들기

답변

1

현재 배포 된 DataImportHandler 버전은 중첩 된 문서 (또는 Solr/Lucene에서 호출 된 BlockJoins)를 지원하지 않습니다.

여기에 however a patch available that you can try out이 있습니다. JIRA (SOLR-5147)에 대한 설명과 향후 사용처에 관한 내용은 꼭 참조하십시오.

+0

감사합니다. 매트, 시도해 보겠습니다. – stinger

+0

내'schema.xml'은 어떻게 생겼습니까? 조기에 우리는 단호한 문서만을 가지고있을 때''와 같은 일련의 필드가있었습니다. ** 모든 ** 필드 또는 루트 엔터티 만 지정해야합니까? – stinger

+1

모든 필드를 지정합니다. 부모와 자녀 엔티티에 필수로 표시된 필드가 있는지 확인하십시오. 물론 여러 레벨에서 같은 이름을 사용하는 경우 동일한 이름을 사용해야합니다 (한 번만 정의되기 때문에). –

1

DataImportHandler를 사용할 수 없기 때문에이를 수행하기 위해 사용자 정의 코드를 작성할 수 있습니다. SolrJ를 사용하여 childDocuments를로드하는 것이 좋습니다. childDocuments를 처리하려면 먼저 schema.xml에 모든 필수 필드 (모든 다른 레코드 유형에 대해)를 만들거나 동적 필드를 사용해야한다. 거기에서 부모에 대한 SolrInputDocument와 자식에 대한 SolrInputDocument를 만든 다음 부모 SolrInputDocument에서 addChildDocument (doc)를 호출하여 자식을 추가 할 수 있습니다.

"parent"또는 "root"등으로 채우는 "content_type"과 같은 수준을 나타내는 필드를 만드는 것이 좋습니다. 그런 다음 레코드를로드하고 나면 블록/결합 쿼리를 사용하여 계층 적으로 검색 할 수 있습니다. 이 작업을 수행하면 각 레코드에 대한 항목이 만들어지며 q = : 쿼리를 수행하면 모든 레코드가 서로 섞여 있음을 알 수 있습니다.