2017-09-04 1 views
0

동일한 Solr ID에 대해 여러 개의 PDF 파일을 인덱싱하고 싶습니다. 우리의 프로젝트 중 하나, 우리는 다음과 같이 표현하는 일부 개체가 있습니다 여러 개의 이진 파일을 고유 한 solrDocument로 인덱싱

{"id"  : "object:1234", 
"authors" : ["me", "you", ...], 
"keywords": ["key1", "key3", ...], 
"files" : [ 
    "/tmp/file1.pdf", 
    "/tmp/file2.pdf", 
    "/tmp/file3.pdf" 
] 
} 

우리는 첫 번째 프로세스를 만들려면 신속하게 Solr6 서버에 인덱스 기본 메타 데이터 (모든 필드 '파일을'기대). 이제 모든 파일 내용을 동일한 ID의 Solr에 색인화하는 프로세스가 필요합니다.

{"id":"object:1234", 
"keywords":["key1", "key2"], 
"authors": ["me", "you"], 
"last_modified":"2017-09-04T12:00:00.000Z", 
"_version_":1577256778756784128 
} 

을 그리고 내 두 번째 프로세스의 끝에서, 나는 나의 solrDocument이 보이는 것보다 싶습니다 :

그래서 첫 번째 프로세스 (이 프로세스가 이미 작동)이 SOLR 문서를 생성합니다

{"id":"object:1234", 
"keywords":["key1", "key2"], 
"authors": ["me", "you"], 
"last_modified":"2017-09-04T13:00:00.000Z", 
"content":["content_of_file1", "content_of_file2", ...], 
"files":["/tmp/file1.pdf", "/tmp/file2.pdf", ...], 
"_version_":1577256778756784129 
} 

Solr 핸들러를 사용하여 쉽게 할 수 있습니까? 이 때
은, 내가 찾은 유일한 해결책은 파일의 내용을 추출하고 내 SOLR 문서를 완료하기 위해 SOLR "parts of document update"를 사용 티카를 호출하는 파이썬 스크립트를 작성하는 것입니다. 하지만이 솔루션은 매우 우아하지 않습니다 .... 그리고 큰 파일을 잘 작동하지 않습니다.

당신이 내 문제를 해결하기 위해 더 나은 솔루션을 알고 있습니까?
많은 도움에 감사드립니다.

답변

1

나는 당신이 무슨 짓을했는지 정확히 할 필요가 꽤 확신 - extractOnly=true와 SOLR의 티카 전화 (또는 티카를 사용하여 직접 필요한 데이터를 얻을 수), 다음 내용을 직접 병합 하나의 문서로 제출 솔레에게. 다중 값 필드 집합으로 추출 된 여러 파일을 병합하기위한 고유 한 지원은 없습니다.

# pseudo code 
document = {files: [], content: []} 

for file in files: 
    document[files].append(file.name) 

    tika = solr.tika(extractOnly=true, read(file.name)) 
    document[content].append(tika[content]) 

solr.add(document) 
solr.commit() 
:

그러나, 나는 당신에 대해 메타 데이터를 추출 단일 요청에서 모든 것을 대신 각 문서에 대한 업데이 트를 만들기를 할 것

관련 문제