21 #ifndef DDC_BRANCH_SERVER_H 22 #define DDC_BRANCH_SERVER_H 24 #include "../ConcordDmnLib/Server.h" 25 #include "../ConcordLib/QueryCompiler.h" 54 return Format(
"{HostNo=%d,HitNo=%zd,SortKey=%s}", m_HostNo, m_HitNo,
jsonStr(m_SortKeyStr).c_str());
105 void CollectCounts();
108 void PruneHits(
size_t PruneLimit);
116 size_t HostHitsLimit(
const vector<size_t>& HostHitIds);
120 {
return LogicalHitNo - m_Offset; };
124 {
return PhysicalHitNo + m_Offset; };
128 {
return min(LogicalHitNo, LogicalOffset(m_Hits.size())); };
132 {
return PhysicalOffset(LogicalMax(LogicalHitNo)); };
135 inline size_t LogicalSize(
size_t StartHitNo,
size_t ResultLimit)
const 136 {
return LogicalMax(StartHitNo+ResultLimit) - LogicalMax(StartHitNo); };
158 typedef map<DWORD, set<string> >
MapT;
170 {
return m_vec.size(); };
173 { m_vec.resize(sz); };
178 void Insert(
DWORD HostId,
const string& SubPath);
182 { Insert(HostId,
"*"); };
185 void InsertAll(
DWORD nDtrs,
const string &SubPath);
188 string DtrPaths(
DWORD HostId)
const;
191 string toString()
const;
223 CRunQueryData(
const string & _Query=
"",
const string& _ResultFormat=
"JSON",
size_t _Start=0,
size_t _Limit=10,
int _TimeOut=10,
string *_pErrorStr=NULL);
229 void Init(
const string & _Query=
"",
const string& _ResultFormat=
"JSON",
size_t _Start=0,
size_t _Limit=10,
int _TimeOut=10,
string *_pErrorStr=NULL,
const string& _ReqPath=
"",
const NavHint& _Hint=
NavHint());
240 {
return Query()->m_Options; };
244 {
return QueryOptions()->IsPruneFilter(); };
291 virtual void Shutdown();
307 virtual void WorkerCloneInit(
const CDDCServer *Parent,
size_t WorkerId);
310 virtual void WorkerCloneFree(
void);
316 virtual bool Close(
SOCKET& rConnectedSocket,
bool linger=
false,
int timeout=5);
319 virtual bool CloseDtr(
SOCKET& rConnectedSocket,
bool linger=
false,
int timeout=5);
326 virtual void handle__get_first_hits(
string &Result,
const char *Query,
int TimeOut,
size_t ResultLimit,
const string& ReqPath,
const NavHint& Hint);
329 virtual void handle__get_hit_strings(
string &Result,
const char *ResultType,
size_t StartHitNo,
size_t ResultLimit);
332 virtual void handle__run_query(
string &Result,
const char *CorpusName,
const char *Query,
const char *ResultType,
size_t StartHitNo,
size_t ResultLimit,
int TimeOut,
const string& ReqPath,
const NavHint& Hint);
335 virtual void handle__expand_terms(
string &Result,
const string& pipeline,
const string& terms,
int timeout,
const string &corpus);
338 virtual void handle__status(
string &Result,
int timeout=10,
bool verbose=
false);
341 virtual void handle__info(
string &Result,
int timeout=10,
bool verbose=
false);
344 virtual void handle__reload(
string &Result,
int depth=0);
347 virtual void handle__clear_cache(
string &Result,
int depth=0);
350 virtual void handle__nodes(
string &Result,
int depth=-1);
353 virtual void handle__close_socket(
string &Result,
SOCKET &rConnectedSocket);
363 void GetSubcorpusJsonStrings(vector<string>& Results,
const string &request,
int timeout=10);
366 string GetSubcorpusJsonArray(
const string &request,
int timeout=10);
369 void RunDistributed();
382 const string& ResultType,
389 string& ResultString,
390 size_t& RelevantDocsCount,
396 void UpdateNavCache();
402 const string& ResultType,
416 const size_t StartHitNo,
417 const size_t ResultLimit,
423 const vector< vector<size_t> >& SortedHits,
424 const vector<size_t>& FirstOffsets,
425 const string& ResultType);
429 const string& ResultType,
443 bool ReadSelectedHosts(
string& CleanQuery);
448 size_t FindHostID(
const string& CorpusName)
const;
453 CHost* FindHost(
const string& CorpusName);
456 void AlignCorpusPath(
const string& UserPath,
string& Dtr,
string& Rest);
CSelectedHosts SelectedHosts
maps immediate subcorpora to selected sub-subcorpora
Definition: BranchServer.h:210
DwordVector m_HitsEnds
Definition: BranchServer.h:144
vector< DWORD > DwordVector
Definition: utilit.h:148
string sResultFormat
result format (string)
Definition: BranchServer.h:200
CDDCBranchServer CDDCServerListenHost
Definition: BranchServer.h:460
string m_QueryResultString
Definition: BranchServer.h:267
Definition: BranchServer.h:197
~CSelectedHosts()
Definition: BranchServer.h:166
DDCFormatTypeEnum
FormatTypeEnum defines the format of output hits:
Definition: ConcCommon.h:468
navigation hint-key for branch server get_first_hits() "paging"
Definition: NavHint.h:57
HitSortOrderEnum m_SortOrder
Definition: BranchServer.h:78
string m_ErrorStr
Definition: BranchServer.h:268
void steal(CHitToSort &X)
Definition: BranchServer.h:44
void resize(size_t sz)
Definition: BranchServer.h:172
string Format(const char *format,...)
Definition: ddcString.cpp:393
size_t StartHitNo
first hit to return
Definition: BranchServer.h:201
size_t LogicalOffset(size_t PhysicalHitNo) const
Definition: BranchServer.h:123
Definition: BranchServer.h:155
vector< size_t > m_DtrEnds
Definition: BranchServer.h:82
#define SOCKET
Definition: string_socket.h:66
string HitsKey
key for response body data (json only)
Definition: BranchServer.h:213
string DocDistrib
?
Definition: BranchServer.h:212
NetworkErrorsEnum
Definition: string_socket.h:45
CQueryCompiler * pQCompiler
query compiler for parsing input queries (parsed query is pQCompiler->m_pQuery)
Definition: BranchServer.h:219
string ResponseBody
response body data
Definition: BranchServer.h:214
size_t m_HitNo
subcorpus-local hit-number for context queries OR hit count for count-queries
Definition: BranchServer.h:32
bool operator<(const CHitToSort &X) const
Definition: BranchServer.h:39
Definition: BranchServer.h:257
size_t m_AllRelevantDocsCount
Definition: BranchServer.h:74
NavHintKey navKey
navigation hint key
Definition: BranchServer.h:217
CQueryOptions * QueryOptions() const
Definition: BranchServer.h:239
size_t LogicalMax(size_t LogicalHitNo) const
Definition: BranchServer.h:127
CHitToSort(BYTE HostNo=0)
Definition: BranchServer.h:35
string * pErrorStr
error string pointer (empty or NULL for success)
Definition: BranchServer.h:215
vector< CHitToSort > m_Hits
Definition: BranchServer.h:81
MapT m_map
sub-paths relative to each selected daugther, keyed by Host-ID
Definition: BranchServer.h:161
CFirstHitsQueryResult m_FHResult
Definition: BranchServer.h:271
HitSortOrderEnum
Definition: ConcCommon.h:172
Definition: string_socket.h:46
vector< CHost > m_Hosts
Definition: BranchServer.h:265
map< DWORD, set< string > > MapT
Definition: BranchServer.h:158
size_t LogicalSize(size_t StartHitNo, size_t ResultLimit) const
Definition: BranchServer.h:135
NetworkErrorsEnum m_NetworkError
Definition: BranchServer.h:79
string jsonStr(ddcObject *o)
json strinfication wrapper
Definition: ddcObject.h:208
const DDCVersionT DDCVersion(2, 2, 8)
CHostIdMap m_HostMap
maps short daughter labels (without "server:" prefix) to m_Hosts[] offsets
Definition: BranchServer.h:266
map< string, size_t > CHostIdMap
Definition: BranchServer.h:253
string m_SortKeyStr
hit sort-string
Definition: BranchServer.h:33
~CFirstHitsQueryResult()
Definition: BranchServer.h:87
vector< int > m_Sockets
Definition: BranchServer.h:83
CQuery * m_pQuery
root of the abstract parse tree
Definition: QueryCompiler.h:67
BYTE m_HostNo
subcorpus id
Definition: BranchServer.h:31
Definition: BranchServer.h:60
generic socket host wrapper class irritatingly also used for client connections
Definition: CHost.h:31
parsed get_first_hits response
Definition: BranchServer.h:72
NavHintCache * m_pNavCache
Definition: BranchServer.h:273
bool HasErrors() const
Definition: BranchServer.h:96
string m_RelevantDocsDistributionStr
Definition: BranchServer.h:76
root-level query options (filters and flags)
Definition: QueryOptions.h:39
void Insert(DWORD HostId)
Definition: BranchServer.h:181
CQuery * Query() const
Definition: BranchServer.h:235
DWORD m_FreqCount
Definition: BranchServer.h:145
Definition: ServerOptions.h:30
vector< DWORD > VecT
Definition: BranchServer.h:157
size_t EndHitNo
final hit number returned
Definition: BranchServer.h:206
navigation hint with respect to local subcorpus tree, for get_first_hits "paging" ...
Definition: NavHint.h:115
size_t size() const
Definition: BranchServer.h:169
int iInternalError
internal error code
Definition: BranchServer.h:204
Definition: BranchServer.h:29
Definition: BranchServer.h:142
Definition: QueryCompiler.h:50
size_t ResultLimit
max number of hits to return
Definition: BranchServer.h:202
string m_ErrorStr
Definition: BranchServer.h:80
unsigned char BYTE
Definition: utilit.h:94
int m_InternalError
Definition: BranchServer.h:77
CRunQueryData m_QueryData
Definition: BranchServer.h:272
string HitDistrib
?
Definition: BranchServer.h:211
LRU cache for faster "paging" through daughter hits for a branch server.
Definition: NavHint.h:215
string ReqPath
request path (>=v2.2.8)
Definition: BranchServer.h:216
size_t m_Offset
Definition: BranchServer.h:84
VecT m_vec
Host-IDs of selected daughter(s); empty for all daughters.
Definition: BranchServer.h:160
bool IsPruneQuery() const
Definition: BranchServer.h:243
Definition: DDCInternalError.h:26
bool m_bHitStringsParallel
send get_hit_strings requests in parallel?
Definition: BranchServer.h:276
string debugStr(void) const
Definition: BranchServer.h:52
int iNetworkError
network error code
Definition: BranchServer.h:205
string m_HitsDistributionStr
Definition: BranchServer.h:75
virtual CDDCServer * WorkerClone(void) const
Definition: BranchServer.h:303
size_t RelevantDocsCount
?
Definition: BranchServer.h:208
map< string, CQueryStatistics > m_QueryToStatis
Definition: BranchServer.h:264
size_t m_AllHitsCount
Definition: BranchServer.h:73
size_t m_NavCacheStep
Definition: BranchServer.h:274
Definition: ddcVersion.h:12
uint32_t DWORD
Definition: utilit.h:105
CSelectedHosts()
Definition: BranchServer.h:163
int TimeOut
query timeout (seconds)
Definition: BranchServer.h:203
string sQuery
query string
Definition: BranchServer.h:199
size_t HitsCount
total number of hits
Definition: BranchServer.h:207
NavHint navHint
user- or cache-supplied navigation hint
Definition: BranchServer.h:218
size_t PhysicalMax(size_t LogicalHitNo) const
Definition: BranchServer.h:131
Truly abstract (index-independent) representation of a parsed query Should eventually replace old ad...
Definition: Query.h:36
size_t PhysicalOffset(size_t LogicalHitNo) const
Definition: BranchServer.h:119