hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SphinxResultCompareUtils.cpp
Go to the documentation of this file.
1 /*
2  * SphinxResultCompareUtils.cpp
3  *
4  * Created on: May 3, 2013
5  * Author: igor
6  */
7 
10 #include <algorithm>
11 
12 bool isEqualWords(const WordInfo& word1, const WordInfo& word2)
13 {
14  return word1.word == word2.word &&
15  word1.hits == word2.hits &&
16  word1.docs == word2.docs;
17 }
18 
19 bool isEqualWordInfo(const vector<SphinxResultDataItem<WordInfo> > &checkWords,
20  const vector<SphinxResultDataItem<WordInfo> > &etalonWords){
21  if (checkWords.size() != etalonWords.size()){
22  return false;
23  }
24  for (size_t wordIndex = 0; wordIndex < checkWords.size(); ++wordIndex){
25  if (!isEqualWords(checkWords[wordIndex].getItem(), etalonWords[wordIndex].getItem())){
26  return false;
27  }
28  }
29  return true;
30 }
31 
32 
33 bool isEqualRequestInfoStatParams(const SphinxRequestInfo &checkInfo, const SphinxRequestInfo &etalonInfo){
34  if (!isEqualWordInfo(checkInfo.getWords(), etalonInfo.getWords())){
35  return false;
36  }
37  if (!(checkInfo.getNodeName() == etalonInfo.getNodeName()) &&
38  (checkInfo.getQuery() == etalonInfo.getQuery()) &&
39  (checkInfo.getQueryId() == etalonInfo.getQueryId()) &&
40  (checkInfo.getMaxResultsNumber() && etalonInfo.getMaxResultsNumber()) &&
41  (checkInfo.getOrderBy() == etalonInfo.getOrderBy()) &&
42  (checkInfo.getTotal() == etalonInfo.getTotal()) &&
43  (checkInfo.getTotalFound() == etalonInfo.getTotalFound()) &&
44  (checkInfo.getTimeMsec() == etalonInfo.getTimeMsec())){
45  return false;
46  }
47  return true;
48 }
49 
50 bool isEqualRequestInfo(SphinxResultData &checkResult, SphinxResultData& etalonResult){
51  if (checkResult.getRequestInfoCount() != etalonResult.getRequestInfoCount()){
52  return false;
53  }
54  for (size_t itemIndex = 0; itemIndex < checkResult.getRequestInfoCount(); ++itemIndex){
55  if (!isEqualRequestInfoStatParams(checkResult.getRequestInfoItem(itemIndex),
56  etalonResult.getRequestInfoItem(itemIndex))){
57  return false;
58  }
59  }
60  return true;
61 }
62 
63 bool isEqAttrInfo(const vector<SphinxResultDataItem<AttrInfo> > &check,
64  const vector<SphinxResultDataItem<AttrInfo> > &etalon)
65 {
66  if (check.size() != etalon.size()){
67  return false;
68  }
69  for (size_t itemIndex = 0; itemIndex < check.size(); ++itemIndex){
70  if (!(check[itemIndex].getItem().name == etalon[itemIndex].getItem().name &&
71  check[itemIndex].getItem().value == etalon[itemIndex].getItem().value)){
72  return false;
73  }
74  }
75  return true;
76 }
77 
78 
79 bool isMatchInfoEq(const SphinxMatchInfo &checkInfo, const SphinxMatchInfo &etalonInfo){
80  if (!isEqAttrInfo(checkInfo.getAttributes(), etalonInfo.getAttributes())){
81  return false;
82  }
83  return checkInfo.getDocId() == etalonInfo.getDocId() &&
84  checkInfo.getWeight() == etalonInfo.getWeight();
85 }
86 
87 
88 bool isEqualMatchInfo(SphinxResultData &checkResult, SphinxResultData& etalonResult){
89  if (checkResult.getMatchInfoCount() != etalonResult.getMatchInfoCount()){
90  return false;
91  }
92  for (size_t itemIndex = 0; itemIndex < checkResult.getRequestInfoCount(); ++itemIndex){
93  if (!isMatchInfoEq(checkResult.getMatchInfoItem(itemIndex),
94  etalonResult.getMatchInfoItem(itemIndex))){
95  return false;
96  }
97  }
98  return true;
99 }
100 
101 
102 bool isEqualUnSortMatchInfo(SphinxResultData &checkResult, SphinxResultData& etalonResult){
103  if (checkResult.getMatchInfoCount() != etalonResult.getMatchInfoCount()){
104  return false;
105  }
106  for (size_t itemIndex = 0; itemIndex < checkResult.getMatchInfoCount(); ++itemIndex){
107  bool found = false;
108  for(size_t etIndex = 0; etIndex < etalonResult.getMatchInfoCount() && !found; ++etIndex){
109  if (isMatchInfoEq(checkResult.getMatchInfoItem(itemIndex),
110  etalonResult.getMatchInfoItem(etIndex))){
111  found = true;
112  }
113  }
114  if (!found){
115  return false;
116  }
117  }
118  return true;
119 }
120 
121 
123  if (!isEqualRequestInfo(checkResult, etalonResult)){
124  return false;
125  }
126  if (!isEqualMatchInfo(checkResult, etalonResult)){
127  return false;
128  }
129  return true;
130 }
131 
133 {
134  SphinxResultDataSerializator sphinxResultDataSerializator(sphinxResultData);
135  string json = "";
136  sphinxResultDataSerializator.setJsonType(15);
137  sphinxResultDataSerializator.serialize(json);
138  return json;
139 }
140 
142 {
143  SphinxResultDataSerializator sphinxResultDataSerializator(sphinxResultData);
144  string json = "";
145  sphinxResultDataSerializator.serialize(json);
146  return json;
147 }
148 
149 SphinxMatchInfo buildSimpleMatchInfo(unsigned long long id, unsigned long long weight){
150  SphinxMatchInfo sphinxMatchInfo;
151  sphinxMatchInfo.setDocId(id);
152  sphinxMatchInfo.setWeightFromNumeric(weight);
153  return sphinxMatchInfo;
154 }
155 
156