일부 배경 "부모가 일치하지 않는 부모 쿼리 수율 문서 필터링"얻을 세 가지 중첩 된 개체, 카탈로그 데이터 인 참여가 SOLR가 ChildDocTransformerFactory 중첩 된 문서를 조회,
- 데이터를 : 제품, 제품, 그리고 스커스, 순서대로. 차별화 요소로 각 레코드에 docType 필드가 있습니다.
- 데이터의 "id"필드는 데이터 유형 내에서 고유하지만 데이터 유형 간에는 고유하지 않습니다. 우리 프로그램에 "uuid"필드를 추가했습니다.이 필드는 P12345와 같이 docType의 첫 글자로 시작되는 ID 인 Solr 가져 오기 파일을 생성합니다. 이것은 uuid 필드를 고유하게 만들고, 우리는 그것을 schema.xml의 uniqueKey로 갖는다.
- 상위 제품 및 모든 하위 문서를 검색하려고합니다. 따라서 우리는 ChildDocTransformerFactory ([child ...])를 사용하여 부모와 함께 자식을 검색합니다. 결과에서 SKU 내의 항목을 중첩 된 문서로 가져 오는 문제는 아직 해결되지 않았지만 어느 시점에서는이를 파악해야합니다. 그러나 지금은 평평하게 처리해야합니다.
- 개념 증명을 구축 중입니다. 이. 이것은 모두 새로운 작업이므로 우리는 많이 바꿀 자유가 있습니다.
- 이 은 SOLR 6.0.0이며, 그것이 우리의 데이터 (I 단순성에 대한 일부 필드를 삭제했습니다) 다음과 같습니다
중요한 경우에 우리는 JSON 형식으로 가져 :
{
"id": 739063,
"docType": "Product",
"uuid": "P739063",
"_childDocuments_": [
{
"id": 1537378,
"price": 25.45,
"color": "Blush",
"docType": "Item",
"productId": 739063,
"uuid": "I1537378",
"_childDocuments_": [
{
"id": 12799578,
"size": "10",
"width": "W",
"docType": "Sku",
"itemId": 1537378,
"uuid": "S12799578"
}
]
}
}
모든 제품과 그 안에 중첩 된 모든 하위 항목을 가져 오는 쿼리는 q = docType : Product & fl = title, id, docType, [child parentFilter = docType : Product]입니다. 해당 쿼리를 실행하면 모두 정상이며 처음 10 개 행을 반환합니다. 그러나 & 행 = 500을 추가하여 더 많은 행을 가져 오면 오류가 발생합니다. 상위 쿼리는 상위 필터 docID = XXX과 일치하지 않는 문서를 생성합니다.
처음 오류를 발견했을 때 우리는 id 필드가 문서 유형간에 고유하지 않음을 발견 했으므로 위에 언급 한 것처럼 uuid 필드를 추가했습니다. 우리는 또한 schema.xml 파일에 을 추가하고, 코어를 지우고, 다시 만들고, Solr을 재시작하여 효과가 있음을 확인했습니다. 우리는 두 번 확인했고 uuid 필드가 유일하다는 것을 확신합니다.
해당 오류에 대한 모든 검색 결과에서 OP에는 다양한 문서 유형을 구분할 수있는 필드가 없지만 Google에서 알 수있는 것처럼 질의와 parentFilter가 모두 을 찾고 있기 때문에 docType : Product 어떻게 부모가 아닌 다른 것을 반환 할 수 있는지 알 수 없습니다. 또한 childFilter = docType : Item 및 childFilter = docType : Sku를 추가하려고 시도했지만 도움이되지 않았습니다. 또한 제품에만 제목이 있기 때문에 query : parentFilter에 title : *을 사용해 보았습니다.
다른 시도가 있습니까?
설명이 있으십니까?
schema.xml에 지정되어 있어도 uuid를 고유 식별자로 사용하지 않고이 문제가 발생할 수 있습니까?
감사합니다.