2013-02-28 4 views
3

MVC 사이트에서 Lucene.net의 검색 기능을 사용하고 있습니다. 이 사이트에는 100,000 개가 넘는 제품이 있습니다. 인덱스는 사이트 용으로 이미 구축 된 것입니다. 그러나 사이트에는 정기적으로 (잠재적으로 매 15 분마다) 데이터베이스를 업데이트하는 2 개의 데이터 피드가 있습니다. 따라서 데이터가 많이 바뀌고 있습니다. Lucene 인덱스를 업데이트하는 방법은 무엇입니까? 아니면 전혀하지 않아도됩니까?Lucene.net 색인을 정기적으로 업데이트하십시오.

+0

색인이 한 번 작성되었으며 다시 쓰지 않는다고 말하고 있습니까? 이 시나리오에서는 데이터베이스를 최신 상태로 유지하는 프로세스를 확실히 만들 것입니다. – rae1

+0

색인을 다시 작성하는 방법이 있습니까? –

답변

2

인덱싱되지 않은 항목을 데이터베이스에서 가져 오기 위해 자주 실행 (잠재적으로 매 15 분마다)하려면 프로세스 스케줄러 (예 : Quartz.Net)를 사용하십시오.

비교할 ID로 필드를 사용하십시오 (시퀀스 번호 또는 날짜 시간과 같음). 색인에서 최근에 추가 된 문서를 가져오고 데이터베이스에서 최신 문서를 가져오고 중간에 모든 색인을 생성합니다. 중복 색인을 생성하지 않도록 조심해야합니다 (또는 색인이없는 문서는 건너 뜁니다).

또는 색인 생성을 2 개의 데이터 피드와 동기화하고 데이터베이스에 저장된 문서의 색인을 생성하여 위에있는 함정 (중복/누락)을 방지 할 수 있습니다. 이 피드가 데이터베이스를 업데이트하는 방법을 잘 모르겠지만이를 가로 채어 색인을 적절하게 업데이트 할 수 있습니다.

0

이 솔루션을 살펴보면 동일한 요구 사항이 있으며이 링크의 솔루션을 사용하여 저에게 효과적이었습니다. 타이머를 사용하면 너무 자주 색인을 생성하므로 어떤 중복/건너 뛰기 문제가 발생하지 않습니다. 시도 해봐.

Making Lucene.Net thread safe in the code

감사합니다.

관련 문제