-
lucene 으로 검색사이트 만들기 - 2 (색인편)학교 강의/인덱싱 2018. 12. 2. 22:09
1편에서는 Field, Document, Analyzer, Directory 등 개념을 알아봤습니다.
인덱싱 편에서는 lucene에서 제공하는 인터페이스가 직관적이라 코드를 보면서 이해하는 게 좋습니다.
1234567891011121314151617181920123456789101112131415161718192021Directory directory = new RAMDirectory();Analyzer analyzer = new SimpleAnalyzer(); //SimpleAnalyzer를 통해서 인덱싱을 진행합니다.IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3, analyzer);IndexWriter writer = new IndexWriter(directory, config); //writer를 통해서 doc를 넣습니다.Document doc = new Document();doc.add(new Field("Title", "The last leaf",Field.Store.YES, Field.Index.ANALYZED));doc.add(new Field("Author", "O Henry",Field.Store.YES, Field.Index.ANALYZED));doc.add(new Field("Summary", "Johnsy, a poor young woman who is seriously ill with pneumonia.She believes that when the ivy vine on the wall outside her window loses all its leaves,she will also die. ",Field.Store.YES, Field.Index.ANALYZED));writer.addDocument(doc);doc = new Document();doc.add(new Field("Title", "What Men Live By",Field.Store.YES, Field.Index.ANALYZED));doc.add(new Field("Author", "Leo Tolstoy",Field.Store.YES, Field.Index.ANALYZED));doc.add(new Field("Summary", "Leo Tolstoy Simon was a poor shoemaker who did not havehouse or land of his own. He used to stay in a peasant's house and earned his livingby work to feed his wife and children.",Field.Store.YES, Field.Index.ANALYZED));writer.addDocument(doc);writer.close();cs cs 위에 코드 이해를 돕기 위해 Document를 구성하는 Field에 대해서 알아볼게요.
Field
Field는 Document 의 Description을 저장합니다. 위에 코드에서는 "Title", "Author", "Summary"라는 3개의 필드가 있습니다.
매 번 writer를 통해 doc를 추가할 때마다 Field를 채워넣는 걸 확인할 수 있습니다.
하지만 Field 명과 Field 값말고도 Store.Yes, Field.Index.ANALYZED와 같은 파라미터가 있는 걸 볼 수 있는데요.
이거는 색인 옵션, 저장 옵션이라고 합니다. 간단히 정리하자면 아래와 같습니다.
Field의 색인 옵션:
Index.ANALYZED: 해당 필드 값을 분석한다. ex) 제목, 내용,
Index.NOT_ANALYZED: 해당 필드 값을 분석하지 않는다. 완전 일치해야한다. ex) 전화번호, 이메일주소,
Index.NO: 해당 Field값은 인덱싱되지 않는다.
Field의 저장 옵션:
Store.YES: Field 값을 온전히 다 저장한다.
Store.NO: Field 값을 간추려서 저장한다. (복원 불가능) 해당 Field 값이 클 경우 쓰임.
그리고 참고로 여러 값을 가진 Field는 아래와 같이 코딩하시면 됩니다.
//마치 작가처럼 여러 작가들이 한 문서에 있을 수 있죠.
12345Document doc = new Document();for (String author : authors) {doc.add(new Field("author", author, Field.Store.YES,Field.Index.ANALYZED));}cs 이제 directory에 원하는 doc들을 추가시킬 수 있습니다. 이 정도만 아셔도 lucene의 인덱싱 과정의 기본은 끝냈다고 할 수 있습니다.
FSDirectory를 이용해서 directory를 로컬에 저장하거나 커스텀 인덱싱에 대해서는 나중에 심화편에서 다루도록 하겠습니다.
만약 Weight 수정에 대해서 알고 싶은 분은 아래 더보기를 클릭해주세요.
사진 출저 및 참고:
https://www.cnblogs.com/skyme/archive/2012/07/30/2615054.html
'학교 강의 > 인덱싱' 카테고리의 다른 글
lucene 으로 검색사이트 만들기 - 1 (개요편) (0) 2018.11.29 댓글