필자의 경우 lucene 색인에 삽입 된 모든 문서는 고유 한 ID를 가지고 있습니다. 새 문서를 lucene 색인에 추가 할 때 문서가 색인에 존재하면 색인에 문서를 삽입하면 안됩니다. 이 전략을 구현하는 방법은 무엇입니까?
lucene이 문서를 찾을 수 없다면 먼저 docId로 문서를 검색 한 다음 삽입해야한다고 생각합니다. 그러나 색인을 생성 할 유일한 indexWriter를 공유하는 3 개의 스레드가 있기 때문에 잘못된 경우가있을 것입니다. 예를 들어 thread 1과 thread 2가 같은 docId를 가지는 2 개의 문서를 처리하고있는 경우, thread1가 docId를 검색해 아무것도 발견하지 않은 경우는, 문서를 인덱스에 삽입 할 수 있습니다 만, thread1가 인덱스를 읽은 후에 thread2는 그 문서를 인덱스에 삽입 할 수 있습니다. 결과적으로 색인에 두 개의 문서가 있습니다. 어떻게 이것을 피할 수 있습니까?lucene : 중복없이 문서를 추가하는 방법
1
A
답변
5
IndexWriter.updateDocument은 용어를 기반으로 문서를 원자 적으로 삭제하고 추가합니다.
관련 문제
- 1. Lucene IndexWriter 문서를 추가하는 속도가 느림
- 2. Lucene/Lucene.NET에서 오래된 문서를 삭제하는 방법
- 3. 중복없이 파일에서 삽입하는 방법
- 4. Lucene updateDocument가 문서를 삭제하지 않습니다.
- 5. 젠드 lucene 인덱스에서 중복 된 문서를 제거
- 6. Lucene updateDocument가 문서를 삭제하지만 카운트가 계속 증가합니다.
- 7. Lucene 특정 필드가있는 문서를 검색 하시겠습니까?
- 8. Version.Lucene_35에서 새 Lucene 문서를 만드는 방법은 무엇입니까?
- 9. Lucene : 특정 문서를 더 중요하게 생각하는 법?
- 10. qt 생성자에 boost 문서를 추가하는 방법
- 11. 중복없이 시퀀스 번호 생성
- 12. lucene 색인을 만드는 방법
- 13. Java에서 Lucene Snowball을 작성하는 방법
- 14. nutch-lucene 검색 엔진에서 "did you mean"을 추가하는 방법
- 15. Lucene : 특정 필드를 높이는 방법
- 16. 중복없이 범위 사이에서 무작위로 선택
- 17. 코드 중복없이 트랜잭션을 처리하려면 어떻게해야합니까?
- 18. 2/다중 열 배열의 값을 비교하고 Visual Basic에서 중복없이 목록 상자에 추가하는 방법
- 19. Lucene 색인을 읽는 방법?
- 20. Lucene 검색 (검색어 방법)
- 21. 주어진 검색어 용어 빈도가있는 Lucene 문서를 모두 찾으십시오.
- 22. Lucene Index에 저장된 문서를 반복 할 수 있습니까?
- 23. 특정 카테고리/태그가있는 SOLR/LUCENE 문서를 부스트 - 'IF'기능을 시뮬레이션하십시오.
- 24. 색인에 문서를 추가 한 후 Lucene IndexWriter를 닫는 것을 잊었습니다.
- 25. Lucene 색인에서 문서를 업데이트 할 때 OutOfMemoryErrors를 피하는 방법은 무엇입니까?
- 26. 2 백만 건의 문서를 RavenDB에 추가하는 방법 - 임베디드
- 27. xml 문서를 Java의 다른 XML 문서에 추가하는 방법
- 28. Visual Studio 프로젝트에 개발자 문서를 추가하는 가장 좋은 방법
- 29. FPDF-PHP를 사용하여 기존 문서를 수정하는 이미지를 추가하는 방법?
- 30. jsoup 문서를 사용하여 자식 노드에 자식을 추가하는 방법
시나리오를 처리하는 방법 - 문서가 발견 된 경우 문서가 업데이트되지 않고 발견되지 않은 경우 업데이트하지 않습니다. [내 질문을 참조하십시오] (http://stackoverflow.com/questions/39653209/how-to-avoid-duplicate-document-indexing-in-lucene-6-0). 나는 시나리오가 누락 된 것이 아닌지 잘 모르겠다 - 가장 자연스러운 상황은 문서가 키를 찾을 수 없을 때 업데이트하는 것 같다. 모든 필드를 문서 키로 조합했습니다. –
내가 구현할 것을 부탁하는 것은 1. 들어오는 문서가 존재하고 기존의 것보다 변경되지 않은 경우 - 아무것도하지 말라 2. 문서가 존재하고 기존의 것보다 바뀌면 - 업데이트 문서 3. 문서가 존재하지 않는다면 - add 문서. –