lucene에서 Field 간략 분석

2232 단어
루틴 3 코드를 먼저 볼게요.
Document doc = new Document();
doc.add(new Field("fullpath", f.getCanonicalPath(),   
                Field.Store.YES, Field.Index.NOT_ANALYZED))

Field 클래스는 문서 인덱스 중 중요한 클래스로 인덱스된 필드 값을 제어합니다
Field.Store.* 필드 저장 옵션은 색인을 역정렬하여 텍스트를 검색할 수 있는지 여부를 제어합니다
변수 이름
뜻풀이
Index.ANALYZED
분석기를 사용하여 필드 값을 독립된 어휘 단원 흐름으로 분해하고 모든 어휘 단원을 검색하여 일반 텍스트 영역에 적용합니다
Index.NOT_ANALYZED
도메인을 인덱스하지만 String을 분석하지 않고 도메인 값을 단일 어휘 단위로 하여 URL, 파일 경로, 전화번호 등 분해할 수 없는 도메인 값을 인덱스에 적용한다.
Index.ANALYZED_NO_NORMS
인덱스에 norms 정보를 저장하지 않습니다. 인덱스에 있는 index-time boost 정보를 기록합니다. 검색할 때 메모리가 비교적 많이 듭니다.
Index.NOT_ANALYZED_NO_NORMS
마찬가지로, norms 정보를 저장하지 않으며, 검색할 때 인덱스 공간과 메모리 소모를 줄일 수 있습니다.No 도메인 값을 검색하지 않습니다.
Index.No
대응하는 필드 값을 검색하지 않기
Field.Index.* 필드 인덱스 옵션은 다음에 검색을 계속할 때 이 값을 복구할 수 있도록 필드의 실제 값을 저장할지 여부를 결정합니다.
변수 이름
뜻풀이
Stroe.YES
원본 문자열이 모두 색인에 저장된 도메인 값을 저장하여 URL, 제목 등의 검색 결과를 보여야 하는 도메인에 유용하게 사용할 수 있습니다.
Stroe.NO
도메인 값을 저장하지 않습니다. 보통 Index와 같습니다.ANALYZED는 원래 형식으로 복원하지 않고도 큰 텍스트 필드 값을 인덱스하기 위해 함께 사용됩니다.
lucene4에서 이런 문법은 이미 적합하지 않다

doc.add(new Field("contents", new FileReader(f), TextField.TYPE_NOT_STORED));      //      

변수 이름
뜻풀이
TYPE_NOT_STORED
인덱스
TYPE_STORED
인덱스
TextField 소스 코드에 대응하는 정의를 보면 lucene3 중역 저장 옵션과 역 인덱스 옵션을 포함하고 있음을 알 수 있습니다

static {
    TYPE_NOT_STORED.setIndexed(true);
    TYPE_NOT_STORED.setTokenized(true);
    TYPE_NOT_STORED.freeze();

    TYPE_STORED.setIndexed(true);
    TYPE_STORED.setTokenized(true);
    TYPE_STORED.setStored(true);
    TYPE_STORED.freeze();
  }

그러나 특수한 요구, 예를 들어 경로에 대해서는 색인을 필요로 하지 않고 분류하려면 수동으로 Field의 익숙함을 설정해야 한다.
 FieldType fieldType = new FieldType();
        fieldType.setIndexed(false);//set     
        fieldType.setStored(true);//set     
        fieldType.setTokenized(true);//set     
doc.add(new Field("fullpath", f.getCanonicalPath(), fieldType));     //      


좋은 웹페이지 즐겨찾기