diff --git a/plume-models/src/search/searcher.rs b/plume-models/src/search/searcher.rs index d4ebb642..86e18c01 100644 --- a/plume-models/src/search/searcher.rs +++ b/plume-models/src/search/searcher.rs @@ -289,13 +289,27 @@ Then try to restart Plume } pub fn fill(&self, conn: &Connection) -> Result<()> { - for post in posts::table - .filter(posts::published.eq(true)) - .load::(conn)? - { - self.update_document(conn, &post)? + let mut writer = self.writer.lock().unwrap(); + let writer = writer.as_mut().unwrap(); + writer.delete_all_documents().unwrap(); + + const PAGE_SIZE: i64 = 1000; + let mut count = 0; + loop { + let posts = posts::table + .filter(posts::published.eq(true)) + .order(posts::id.asc()) + .limit(PAGE_SIZE) + .offset(count) + .load::(conn)?; + for post in posts.iter() { + self.add_document(conn, post)? + } + if posts.len() < PAGE_SIZE as usize { + break Ok(()) + } + count += posts.len(); } - Ok(()) } pub fn commit(&self) {