제 3 자에 의해 생성 된 큰 lucene 지수가 있습니다.lucene 필드의 색인화 된 속성을 설정 하시겠습니까?
색인이 생성되지 않은 입력란을 검색하고 싶습니다. 해당 필드가 인덱싱 된 상태로 인덱스를 다시 만들 수 있습니까?
제 3 자에 의해 생성 된 큰 lucene 지수가 있습니다.lucene 필드의 색인화 된 속성을 설정 하시겠습니까?
색인이 생성되지 않은 입력란을 검색하고 싶습니다. 해당 필드가 인덱싱 된 상태로 인덱스를 다시 만들 수 있습니까?
독자적으로 색인 리더와 작성기를 사용하여 해결되었습니다. 그것이 적절한 방법인지 몰라요. 필드는 문자열 필드 (저장된) 였으므로이 경우에는 방금 작업했습니다.
IndexReader reader = IndexReader.open(...);
IndexWriter writer = new IndexWriter(...);
for(int i = 0; i < reader.maxDoc(); i++) {
if(reader.isDeleted(i)) continue;
Document d = reader.document(i);
Document d2 = new Document();
for(Field f : (List<Field>)d.getFields()) {
Field f2 = f;
if(f.name().equals(FIELD_NAME))
f2 = new Field(FIELD_NAME, f.stringValue(), Field.Store.YES, Field.Index.NOT_ANALYZED);
d2.add(f2);
}
writer.addDocument(d2);
}
writer.optimize();
writer.close();
필드가 올바르게 저장되었다고 가정합니다. 그렇지 않다면, 당신은 운이 없다. 이 저장되어있는 경우
, 당신은 몇 가지 옵션이 있습니다, 나는 가장 쉬운 될 것이라고 생각 : CSV 출력 색인 = true로 (see here)
변화 해당 필드의 스키마를 같은
덤프 모든 문서를
후 모두를 (CSV 출력뿐만 아니라 업데이트에 사용될 수있다)
사용자는 문서의 저장된 필드 만 가져옵니다. 인덱싱되었지만 저장되지 않은 필드는이 방법을 사용하면 손실됩니다. 이는 귀하의 경우에는 문제가되지 않지만 대량의 내용이 많은 큰 입력란에 대해서만 색인을 생성하는 것이 일반적입니다. 지식을 위해서 – femtoRgon
이 그런 경우에 유효한 접근법이 있습니까? – fferri
인덱스 작성 방법을 제어 할 수있는 경우 해당 필드를 인덱싱 대상으로 변경하십시오. 인덱스 빌드 프로세스를 제어하지 않으면 수행중인 작업과 매우 유사하지만 검색과 관련하여 보조 인덱스로 유지하고 기본 인덱스에 적절한 레코드에 대한 포인터를 저장합니다 (NOT a DocId). 인덱스에서 저장되지 않은 데이터를 실제로 다시 작성할 수는 없습니다. – femtoRgon