From 4ced9bee493ba31182c2050675c41a616775b5da Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Tue, 4 Oct 2011 08:04:17 +0200 Subject: [PATCH] add termDocCnt method --- src/rcldb/rcldb.cpp | 26 ++++++++++++++++++++++++++ src/rcldb/rcldb.h | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/rcldb/rcldb.cpp b/src/rcldb/rcldb.cpp index b42d205d..4c2c9445 100644 --- a/src/rcldb/rcldb.cpp +++ b/src/rcldb/rcldb.cpp @@ -754,6 +754,32 @@ int Db::docCnt() return res; } +int Db::termDocCnt(const string& _term) +{ + int res = -1; + if (!m_ndb || !m_ndb->m_isopen) + return -1; + + string term; + if (!unacmaybefold(_term, term, "UTF-8", true)) { + LOGINFO(("Db::termDocCnt: unac failed for [%s]\n", _term.c_str())); + return 0; + } + + if (m_stops.hasStops() && m_stops.isStop(term)) { + LOGDEB1(("Db::termDocCnt [%s] in stop list\n", term.c_str())); + return 0; + } + + XAPTRY(res = m_ndb->xdb().get_termfreq(term), m_ndb->xrdb, m_reason); + + if (!m_reason.empty()) { + LOGERR(("Db::termDocCnt: got error: %s\n", m_reason.c_str())); + return -1; + } + return res; +} + bool Db::addQueryDb(const string &dir) { LOGDEB(("Db::addQueryDb: ndb %p iswritable %d db [%s]\n", m_ndb, diff --git a/src/rcldb/rcldb.h b/src/rcldb/rcldb.h index dd1d7e97..559500e3 100644 --- a/src/rcldb/rcldb.h +++ b/src/rcldb/rcldb.h @@ -173,7 +173,8 @@ class Db { /** Return total docs in db */ int docCnt(); - + /** Return count of docs which have an occurrence of term */ + int termDocCnt(const string& term); /** Add extra database for querying */ bool addQueryDb(const string &dir); /** Remove extra database. if dir == "", remove all. */