2017-05-19 1 views
1

전체 텍스트 검색을 지원하려면 필드 ID와 msg를 lucene에 저장합니다. 사용자가 키워드를 입력하면 lucene은 검색을 수행하고 결과를 표시하고 사용자가 저장된 ID를 사용하여 키워드를 클릭하면 DB에서 결과를 가져 와서 표시 할 세부 정보를 엽니 다.lucene에서 역 색인을 생성하기 위해 필드 자체를 저장해야합니까?

lucene은 전체 msg 필드 대신 msg 필드에 역 색인을 저장하고 결과를 표시하기 위해 DB에서 결과를 가져올 수 있도록 ID를 넘겨 줄 수 있습니까?

이렇게하면 내 데이터가 중복되지 않습니다.

답변

1

Lucene에서 문서 작성/가져 오기 목적 (DB를 통해 설명하는 목적) 및 검색 목적으로 역 색인으로 색인을 생성하는 것은 매우 다른 두 가지 작업입니다.

색인 생성 방법에 대한 코드가 표시되지 않았습니다.

Lucene에 데이터를 저장하는 것은 선택 사항이며 저장 공간 비용으로 추가 DB 호출 등을 피하기 위해 데이터를 저장하기도하지만 마스터 데이터에 데이터를 유지하면 동기화 요구 사항도 줄어 듭니다. 그래서 절충안이 있습니다.

코드 예 : DOC_ID은 색인 생성되고 저장되며 TEXT_FIELD은 색인이 생성되고 저장되지 않습니다.

Document doc = new Document(); 
doc.add(new Field("DOC_ID", "DOCONE", new FieldType(
      TextField.TYPE_STORED))); 
doc.add(new Field("TEXT_FIELD", "This", new FieldType(
      TextField.TYPE_NOT_STORED))); 
writer.addDocument(doc); 

그래서 검색 한 후, 당신의 히트 문서라고하자 - hitDoc 그래서 아래 얻을 것이다, hitDoc.getField("DOC_ID")="DOCONE"hitDoc.getField("TEXT_FIELD")=NULL 두 필드가 인덱스되어

을하지만 하나만 저장됩니다. 색인은 검색 될 수 있음을 의미합니다.

관련 문제