21 #ifndef DDC_NAV_HINT_H 22 #define DDC_NAV_HINT_H 24 #include "../ConcordLib/ConcCommon.h" 25 #include "../ConcordLib/LRUCache.h" 26 #include "../CommonLib/ddcThread.h" 32 #define DDC_DEFAULT_NAV_HINT_CACHE_CAPACITY 1024 35 #define DDC_DEFAULT_NAV_HINT_CACHE_STEP 1000 41 # define NAVCACHE_DEBUG(x) x 43 # define NAVCACHE_DEBUG(x) 50 # define NAVCACHE_TRACE(x) x 52 # define NAVCACHE_TRACE(x) 63 : m_QueryStr(qstr), m_HitNo(hitno)
88 inline void assign(
const string& qstr,
const size_t hitno=0)
103 {
return Format(
"%zd %s", m_HitNo, m_QueryStr.c_str()); };
123 : m_SortKey(
""), m_Offset(0), m_DtrHints(nDtrs,
"")
128 : m_SortKey(
""), m_Offset(Offset), m_DtrHints(nDtrs,
"")
132 NavHint(
const string& SortKey,
size_t Offset,
size_t nDtrs)
133 : m_SortKey(SortKey), m_Offset(Offset), m_DtrHints(nDtrs,
"")
137 NavHint(
const string& SortKey,
size_t Offset,
const vector<string> DtrHints)
138 : m_SortKey(SortKey), m_Offset(Offset), m_DtrHints(DtrHints)
150 m_DtrHints.assign(nDtrs,
"");
155 {
return m_SortKey.empty() && m_Offset==0; };
158 size_t OffsetTotal()
const;
162 { m_Offset = OffsetTotal(); };
165 inline const char*
DtrHint(
size_t DtrNo)
const 166 {
return (DtrNo < m_DtrHints.size() ? m_DtrHints[DtrNo].c_str() :
""); };
170 {
return (DtrNo < m_DtrHints.size() ? strtoul(m_DtrHints[DtrNo].c_str(),NULL,0) : 0); };
189 inline void update(
const string& SortKey,
size_t Offset,
size_t nDtrs)
193 m_DtrHints.resize(nDtrs);
204 string toString(
bool includeSortKey=
true)
const;
239 : m_Cache(capacity, &m_Mutex)
301 bool lower_bound(ValT& val,
const KeyT& key,
bool doPromote=
true);
309 lower_bound(val, key, doPromote);
317 inline void insert(
const KeyT& key,
const ValT& val)
335 {
return lower_bound(KeyT(QueryStr,HitNo)); };
338 inline void insert(
const string& QueryStr,
size_t HitNo,
const string& SortKey,
const size_t Offset,
const vector<string>& DtrHints)
339 { insert(KeyT(QueryStr,HitNo), ValT(SortKey,Offset,DtrHints)); };
generic lockable object wrapper class
Definition: ddcThread.h:30
void insert(const string &QueryStr, size_t HitNo, const string &SortKey, const size_t Offset, const vector< string > &DtrHints)
wrapper for insert(KeyT(QueryStr, HitNo), ValT(SortKey,Offset,DtrHints))
Definition: NavHint.h:338
NavHint(size_t Offset, size_t nDtrs)
constructor given local offset and number of daughters
Definition: NavHint.h:127
const char * DtrHint(size_t DtrNo) const
get hint-string for daughter number DtrNo
Definition: NavHint.h:165
ValT lower_bound(const string &QueryStr, size_t HitNo)
wrapper for lower_bound(KeyT(QueryStr, HitNo))
Definition: NavHint.h:334
navigation hint-key for branch server get_first_hits() "paging"
Definition: NavHint.h:57
string toString(bool includeSortKey=true) const
Definition: NavHint.cpp:62
string Format(const char *format,...)
Definition: ddcString.cpp:393
void UpdateOffset()
convenience wrapper: set local offset to sum of daughter offsets
Definition: NavHint.h:161
CacheT m_Cache
underlying LRU cache
Definition: NavHint.h:230
size_t m_HitNo
maximum logical hit number covered w.r.t. local corpus
Definition: NavHint.h:59
#define DDC_DEFAULT_NAV_HINT_CACHE_CAPACITY
Definition: NavHint.h:32
ddcLRUCache< KeyT, ValT > CacheT
typedef for underlying LRU cache object
Definition: NavHint.h:225
string toString() const
debug: native stringification
Definition: NavHint.h:102
size_t DtrOffset(size_t DtrNo) const
get offset for daughter number DtrNo
Definition: NavHint.h:169
void fromString(const char *s)
debug: native decoding from string
Definition: NavHint.cpp:28
NavHintKey KeyT
navigation cache key type
Definition: NavHint.h:220
void insert(const KeyT &key, const ValT &val)
Definition: LRUCache.h:226
void reserve(size_t capacity_)
wraps lock(); m_Cache.reserve(capacity_); unlock()
Definition: NavHint.h:250
void clear()
wraps lock(); m_Cache.clear(); unlock()
Definition: NavHint.h:280
void clear(size_t nDtrs=0)
clear the hint
Definition: NavHint.h:146
string m_QueryStr
original query string
Definition: NavHint.h:58
#define ddcLogTrace(Msg)
Definition: ddcLog.h:115
bool empty() const
returns true iff this is an empty hint
Definition: NavHint.h:154
void clear()
clear the object
Definition: NavHint.h:67
void ClearString(string &S)
Definition: utilit.h:497
vector< string > m_DtrHints
offset hints for immediate daughter subcorpora
Definition: NavHint.h:118
NavHint(const string &SortKey, size_t Offset, size_t nDtrs)
constructor given sort key, offset, and number of subcorpora
Definition: NavHint.h:132
~NavHintCache()
default destructor (empty)
Definition: NavHint.h:243
bool operator<(const NavHintKey &X) const
Definition: NavHint.h:76
NavHintCache(size_t capacity=1024)
Definition: NavHint.h:238
void clear()
clear all cached items (no implicit locks)
Definition: LRUCache.h:113
size_t reserve(size_t cap)
update cache capacity; implicitly calls clean()
Definition: LRUCache.h:152
navigation hint with respect to local subcorpus tree, for get_first_hits "paging" ...
Definition: NavHint.h:115
NavHint(const string &SortKey, size_t Offset, const vector< string > DtrHints)
full constructor
Definition: NavHint.h:137
void update(const string &SortKey, size_t Offset, size_t nDtrs)
assigns SortKey and Offset and resize DtrHints
Definition: NavHint.h:189
size_t size() const
get number of currently cached items
Definition: LRUCache.h:144
#define NAVCACHE_TRACE(x)
Definition: NavHint.h:52
LRU cache for faster "paging" through daughter hits for a branch server.
Definition: NavHint.h:215
size_t size() const
wraps lock(); m_Cache.size(); unlock()
Definition: NavHint.h:264
NavHintKey & operator=(const NavHintKey &X)
assignment operator
Definition: NavHint.h:95
NavHint ValT
navigation cache value type
Definition: NavHint.h:221
void insert(const KeyT &key, const ValT &val)
Definition: NavHint.h:317
string escapeCString(const std::string &s)
Definition: ddcString.cpp:30
string toJson() const
debug: JSON stringification
Definition: NavHint.cpp:40
void assign(const string &qstr, const size_t hitno=0)
verbose assignment
Definition: NavHint.h:88
string m_SortKey
minimum sort key from this node or any subcorpus
Definition: NavHint.h:116
NavHintKey(const string &qstr="", const size_t hitno=0)
default constructor
Definition: NavHint.h:62
size_t m_Offset
minimum offset for local corpus node
Definition: NavHint.h:117
bool operator==(const NavHintKey &X) const
equality operator (for debugging)
Definition: NavHint.h:84
NavHint(size_t nDtrs=0)
Definition: NavHint.h:122
NavHint(const string &HintStr)
constructor from string
Definition: NavHint.h:142
ValT lower_bound(const KeyT &key, bool doPromote=true)
Definition: NavHint.h:306