--- a/src/common/rclconfig.cpp
+++ b/src/common/rclconfig.cpp
@@ -879,6 +879,21 @@
}
}
+ // Query aliases map
+ tps = m_fields->getNames("queryaliases");
+ for (vector<string>::const_iterator it = tps.begin();
+ it != tps.end(); it++){
+ string canonic = stringtolower(*it); // canonic name
+ string aliases;
+ m_fields->get(canonic, aliases, "queryaliases");
+ vector<string> l;
+ stringToStrings(aliases, l);
+ for (vector<string>::const_iterator ait = l.begin();
+ ait != l.end(); ait++) {
+ m_aliastoqcanon[stringtolower(*ait)] = canonic;
+ }
+ }
+
#if 0
for (map<string, FieldTraits>::const_iterator it = m_fldtotraits.begin();
it != m_fldtotraits.end(); it++) {
@@ -910,10 +925,10 @@
}
// Return specifics for field name:
-bool RclConfig::getFieldTraits(const string& _fld, const FieldTraits **ftpp)
- const
-{
- string fld = fieldCanon(_fld);
+bool RclConfig::getFieldTraits(const string& _fld, const FieldTraits **ftpp,
+ bool isquery) const
+{
+ string fld = isquery ? fieldQCanon(_fld) : fieldCanon(_fld);
map<string, FieldTraits>::const_iterator pit = m_fldtotraits.find(fld);
if (pit != m_fldtotraits.end()) {
*ftpp = &pit->second;
@@ -950,6 +965,18 @@
}
LOGDEB1(("RclConfig::fieldCanon: [%s] -> [%s]\n", f.c_str(), fld.c_str()));
return fld;
+}
+
+string RclConfig::fieldQCanon(const string& f) const
+{
+ string fld = stringtolower(f);
+ map<string, string>::const_iterator it = m_aliastoqcanon.find(fld);
+ if (it != m_aliastoqcanon.end()) {
+ LOGDEB1(("RclConfig::fieldQCanon: [%s] -> [%s]\n",
+ f.c_str(), it->second.c_str()));
+ return it->second;
+ }
+ return fieldCanon(f);
}
vector<string> RclConfig::getFieldSectNames(const string &sk, const char* patrn)
@@ -1423,6 +1450,7 @@
m_ptrans = new ConfSimple(*(r.m_ptrans));
m_fldtotraits = r.m_fldtotraits;
m_aliastocanon = r.m_aliastocanon;
+ m_aliastoqcanon = r.m_aliastoqcanon;
m_storedFields = r.m_storedFields;
m_xattrtofld = r.m_xattrtofld;
if (r.m_stopsuffixes)