2010-06-18 3 views
7

Lucene 실시간 인덱싱을 구현하는 가장 좋은 방법은 무엇입니까?Lucene 실시간 인덱싱?

+1

실시간 인덱싱은 무엇입니까? 당신이 찾고있는 것을 조금 더 설명해 주시겠습니까? –

+0

2 년 동안 solr에서이 작업을 계속 해왔다. solr은 실시간 인덱싱과 관련하여 올바른 플랫폼이 아닙니다. 큰 인덱스에서는 커밋이 매우 무겁습니다. 시간당 커밋을 1 회 처리 할 수있는 대규모 설치에 대해서는 들어 봤습니다. 즉, Lucandra라고하는 최근 프로젝트가 유망하다고 증명할 수 있습니다. 지금은 문서를 찾을 수 없지만 커밋 할 필요가 없다는 말을 들었습니다. http://github.com/tjake/Lucandra#readme –

+1

더 자세히 설명해야합니다. "실시간"에는 특별한 의미가 없습니다. 최소 허용 가능한 지연을 지정해야합니다. 예를 들어, 비 실시간 인덱스의 경우 소프트 실시간 (예 : 업데이트를 표시하는 데 5-10 초 소요)이 어렵지 않습니다. – StaxMan

답변

4

색인 작성기에서 색인 판독기를 가져옵니다.

업데이트 : 현재 방법이 open a directory reader using an index writer 개체 인 것처럼 보입니다. http://wiki.apache.org/lucene-java/NearRealtimeSearch

+0

어떻게 실시간 인덱싱에 도움이 될까요? – Mikos

+3

검색을 허용하여 커밋 시점 이전의 문서를 찾을 수있게합니다. 작가가 얻은 독자는 문서가 추가 될 때마다 지속적으로 업데이트됩니다. –

+1

IndexReader를 시도하는 동안 reader = indexWriter.getReader(); IndexWriter 유형의 getReader() 메소드가 표시되지 않습니다. http://lucene.apache.org/core/4_7_2/core/org/apache/lucene/index/IndexWriter.html?is-external=true –

2
+0

Zoie는 약속을했지만, 문서와 코드 샘플이 심각하게 부족하다는 것을 알았습니다. Zoie와 함께 인덱싱 할 문서가 일괄 처리되면 인덱싱이 빠르지 만 한 번에 몇 개의 문서를 인덱싱하는 것은 실제로 매우 느립니다. 개인적으로 원시 Lucene을 사용하기 쉬운 API로 사용했습니다. –

1

루씬 위키 몇 가지 정보가 있습니다. 그것은 여전히 ​​매우 새롭지 만, NoSQL 정신으로 분산 Solr 색인을 제공 할 것입니다.

8

Lucene에는 정확하게이 필요를 해결하기 위해 거의 실시간 검색이라고하는 기능이 있습니다.

IndexReader가 IndexWriter와 동일한 JVM에 있어야합니다.

IndexWriter를 사용하여 변경 한 다음 IndexReader.open (writer)을 사용하여 작성기에서 직접 읽거나 이전 Lucene 릴리스 writer.getReader()를 사용하여 판독기를 엽니 다. 이 호출은 일반적으로 판독기를 여는 데 일반적으로 소요되는 비용이 많이 드는 커밋을 우회하므로 대개 (리더를 마지막으로 연 이후로 변경 한 횟수에 비례하여) 매우 빠릅니다. 작가는 커밋되지 않은 변경 사항을 검색 할 수 있습니다.

이 판독기는 여전히 작성기에서 포인트 인 타임 스냅 샷을 검색합니다 (예 : 열어 본 모든 변경 사항).