|
a/src/rcldb/rclquery.cpp |
|
b/src/rcldb/rclquery.cpp |
|
... |
|
... |
153 |
}
|
153 |
}
|
154 |
m_nq->query = xq;
|
154 |
m_nq->query = xq;
|
155 |
string ermsg;
|
155 |
string ermsg;
|
156 |
string d;
|
156 |
string d;
|
157 |
try {
|
157 |
try {
|
158 |
m_nq->enquire = new Xapian::Enquire(m_db->m_ndb->db);
|
158 |
m_nq->enquire = new Xapian::Enquire(m_db->m_ndb->xrdb);
|
159 |
if (m_collapseDuplicates) {
|
159 |
if (m_collapseDuplicates) {
|
160 |
m_nq->enquire->set_collapse_key(Rcl::VALUE_MD5);
|
160 |
m_nq->enquire->set_collapse_key(Rcl::VALUE_MD5);
|
161 |
} else {
|
161 |
} else {
|
162 |
m_nq->enquire->set_collapse_key(Xapian::BAD_VALUENO);
|
162 |
m_nq->enquire->set_collapse_key(Xapian::BAD_VALUENO);
|
163 |
}
|
163 |
}
|
|
... |
|
... |
256 |
Chrono chron;
|
256 |
Chrono chron;
|
257 |
try {
|
257 |
try {
|
258 |
m_nq->mset = m_nq->enquire->get_mset(0, qquantum,0, m_nq->decider);
|
258 |
m_nq->mset = m_nq->enquire->get_mset(0, qquantum,0, m_nq->decider);
|
259 |
ret = m_nq->mset.get_matches_lower_bound();
|
259 |
ret = m_nq->mset.get_matches_lower_bound();
|
260 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
260 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
261 |
m_db->m_ndb->db.reopen();
|
261 |
m_db->m_ndb->xrdb.reopen();
|
262 |
m_nq->mset = m_nq->enquire->get_mset(0, qquantum,0, m_nq->decider);
|
262 |
m_nq->mset = m_nq->enquire->get_mset(0, qquantum,0, m_nq->decider);
|
263 |
ret = m_nq->mset.get_matches_lower_bound();
|
263 |
ret = m_nq->mset.get_matches_lower_bound();
|
264 |
} XCATCHERROR(ermsg);
|
264 |
} XCATCHERROR(ermsg);
|
265 |
LOGDEB(("Query::getResCnt: %d mS\n", chron.millis()));
|
265 |
LOGDEB(("Query::getResCnt: %d mS\n", chron.millis()));
|
266 |
if (!ermsg.empty())
|
266 |
if (!ermsg.empty())
|
|
... |
|
... |
302 |
LOGDEB(("Query::getDoc: fetching %d starting at %d\n",
|
302 |
LOGDEB(("Query::getDoc: fetching %d starting at %d\n",
|
303 |
qquantum, first));
|
303 |
qquantum, first));
|
304 |
try {
|
304 |
try {
|
305 |
m_nq->mset = m_nq->enquire->get_mset(first, qquantum);
|
305 |
m_nq->mset = m_nq->enquire->get_mset(first, qquantum);
|
306 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
306 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
307 |
m_db->m_ndb->db.reopen();
|
307 |
m_db->m_ndb->xrdb.reopen();
|
308 |
m_nq->mset = m_nq->enquire->get_mset(first, qquantum);
|
308 |
m_nq->mset = m_nq->enquire->get_mset(first, qquantum);
|
309 |
} catch (const Xapian::Error & error) {
|
309 |
} catch (const Xapian::Error & error) {
|
310 |
LOGERR(("enquire->get_mset: exception: %s\n",
|
310 |
LOGERR(("enquire->get_mset: exception: %s\n",
|
311 |
error.get_msg().c_str()));
|
311 |
error.get_msg().c_str()));
|
312 |
m_reason = error.get_msg();
|
312 |
m_reason = error.get_msg();
|
|
... |
|
... |
341 |
LOGDEB(("Fetching for first %d, count %d\n", xapi, qquantum));
|
341 |
LOGDEB(("Fetching for first %d, count %d\n", xapi, qquantum));
|
342 |
try {
|
342 |
try {
|
343 |
m_nq->mset = m_nq->enquire->get_mset(xapi, qquantum,
|
343 |
m_nq->mset = m_nq->enquire->get_mset(xapi, qquantum,
|
344 |
0, m_nq->decider);
|
344 |
0, m_nq->decider);
|
345 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
345 |
} catch (const Xapian::DatabaseModifiedError &error) {
|
346 |
m_db->m_ndb->db.reopen();
|
346 |
m_db->m_ndb->xrdb.reopen();
|
347 |
m_nq->mset = m_nq->enquire->get_mset(xapi, qquantum,
|
347 |
m_nq->mset = m_nq->enquire->get_mset(xapi, qquantum,
|
348 |
0, m_nq->decider);
|
348 |
0, m_nq->decider);
|
349 |
|
349 |
|
350 |
} catch (const Xapian::Error & error) {
|
350 |
} catch (const Xapian::Error & error) {
|
351 |
LOGERR(("enquire->get_mset: exception: %s\n",
|
351 |
LOGERR(("enquire->get_mset: exception: %s\n",
|