4
내 응용 프로그램은 lucene에서 색인을 생성하고 데이터베이스에 저장할 각 행에 대해 고유 한 ID를 생성합니다. 하나의 sutation은 행과 ID가 같으면 행을 업데이트하고 새 행과 색인을 삽입하지 않으려 고합니다.lucene에서 행을 고유하게 유지하기 위해 필드를 설정하는 방법은 무엇입니까?
어떻게 수행하나요?
내 응용 프로그램은 lucene에서 색인을 생성하고 데이터베이스에 저장할 각 행에 대해 고유 한 ID를 생성합니다. 하나의 sutation은 행과 ID가 같으면 행을 업데이트하고 새 행과 색인을 삽입하지 않으려 고합니다.lucene에서 행을 고유하게 유지하기 위해 필드를 설정하는 방법은 무엇입니까?
어떻게 수행하나요?
이것은 정확히 IndexWrite#updateDocument 메소드의 목적입니다. 첫 번째 인수는 색인에서 고유해야하는 용어입니다. 예를 들어
,
String id = "42";
Document doc = new Document();
Field field = new Field("id", id, Store.YES, Index.NOT_ANALYZED);
doc.add(field);
indexWriter.updateDocument(new Term("id", id), doc);
그
doc
을 보장하여 인덱스의 ID (42)와 유일한 문서입니다.
ID가없는 경우 삽입합니까? – Shisoft
예. 설명서에는 "용어가 포함 된 문서를 먼저 삭제 한 다음 새 문서를 추가하여 문서를 업데이트합니다."라는 내용이 나와 있습니다. 이전에 동일한 ID로 문서가 색인 된 특별한 경우에는 문서가 삭제되지 않습니다. – jpountz