--- a/src/rcldb/rclquery.cpp
+++ b/src/rcldb/rclquery.cpp
@@ -1,5 +1,5 @@
 #ifndef lint
-static char rcsid[] = "@(#$Id: rclquery.cpp,v 1.1 2008-06-13 18:22:46 dockes Exp $ (C) 2008 J.F.Dockes";
+static char rcsid[] = "@(#$Id: rclquery.cpp,v 1.2 2008-07-01 08:31:08 dockes Exp $ (C) 2008 J.F.Dockes";
 #endif
 
 #include <list>
@@ -79,16 +79,18 @@
 bool Query::setQuery(RefCntr<SearchData> sdata, int opts, 
 		     const string& stemlang)
 {
+    LOGDEB(("Query::setQuery:\n"));
+
     if (!m_db || ISNULL(m_nq)) {
 	LOGERR(("Query::setQuery: not initialised!\n"));
 	return false;
     }
     m_reason.erase();
-    LOGDEB(("Query::setQuery:\n"));
 
     m_filterTopDir = sdata->getTopdir();
-    deleteZ(m_nq->decider);
-    deleteZ(m_nq->postfilter);
+    m_qOpts = opts;
+    m_nq->clear();
+
     if (!m_filterTopDir.empty()) {
 #if XAPIAN_FILTERING
 	m_nq->decider = 
@@ -97,12 +99,9 @@
 #endif
 	    new FilterMatcher(m_filterTopDir);
     }
-    m_nq->m_dbindices.clear();
-    m_qOpts = opts;
-    m_nq->termfreqs.clear();
+
     Xapian::Query xq;
-    if (!sdata->toNativeQuery(*m_db, &xq, 
-			      (opts & QO_STEM) ? stemlang : "")) {
+    if (!sdata->toNativeQuery(*m_db, &xq, (opts & QO_STEM) ? stemlang : "")) {
 	m_reason += sdata->getReason();
 	return false;
     }
@@ -110,7 +109,6 @@
     string ermsg;
     string d;
     try {
-	delete m_nq->enquire;
 	m_nq->enquire = new Xapian::Enquire(m_db->m_ndb->db);
 	m_nq->enquire->set_query(m_nq->query);
 	m_nq->mset = Xapian::MSet();