이것은 매우 깨끗한 해결책은 아니지만 그게 전부입니다 SegmentInfos 통해 찾을 수 있습니다.
LuceneVersion ->이 사용 된 루씬 코드 버전 커밋 세 빈트로 작성 : 당신이
을 만들 때 버그 수정, 마이너, 메이저 당신의
IndexReader
, 그것은 콘크리트 리더 클래스 중 하나입니다 -
StandardDirectoryReader처럼이 클래스는 아래와 같이
toString()
메소드를 가지고 있습니다. 각 세그먼트에 대해 lucene 버전을 인쇄하고 있으므로
toString()
을
IndexReader
인스턴스로 간단하게 호출 할 수 있습니다.
@Override public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(getClass().getSimpleName()); buffer.append('('); final String segmentsFile = segmentInfos.getSegmentsFileName(); if (segmentsFile != null) { buffer.append(segmentsFile).append(":").append(segmentInfos.getVersion()); } if (writer != null) { buffer.append(":nrt"); } for (final LeafReader r : getSequentialSubReaders()) { buffer.append(' '); buffer.append(r); } buffer.append(')'); return buffer.toString(); }
나는 인덱스는 문서가 너무 이전 버전의 작가에서 저지른 수 있으므로 전체 인덱스에 대해 하나의 버전이 이해가되지 않는 것 같아요.
이전 버전의 루씬 버전 작성자와 커밋 된 문서는 최신 버전 리더를 사용하여 검색 할 수 있습니다. 버전 거리가 Lucene에서 정의한만큼 멀지 않은 경우입니다.
regex를 사용하여 코어 Java에서 간단한 로직을 작성하여 가장 높은 lucene 버전을 lucene 인덱스 버전으로 추출 할 수 있습니다.