--- a/src/rcldb/synfamily.h
+++ b/src/rcldb/synfamily.h
@@ -25,9 +25,9 @@
* can provide different applications each with a family of keyspaces.
* Two characters are reserved by the class and should not be used inside
* either family or member names: ':' and ';'
- * A synonym key for family "stemdb", member "french", key "thisstem"
+ * A synonym key for family "stemdb", member "french", key "somestem"
* looks like:
- * :stemdb:french:stem -> stem siblings
+ * :stemdb:french:somestem -> somestem expansions
* A special entry is used to list all the members for a family, e.g.:
* :stemdb;members -> french, english ...
*/
@@ -47,29 +47,30 @@
XapSynFamily(Xapian::Database xdb, const std::string& familyname)
: m_rdb(xdb)
{
- m_prefix1 = string(":") + familyname;
+ m_prefix1 = std::string(":") + familyname;
}
/** Expand one term (e.g.: familier) inside one family number (e.g: french)
*/
- bool synExpand(const std::string& fammember,
- const std::string& term,
+ virtual bool synExpand(const std::string& fammember,
+ const std::string& key,
std::vector<std::string>& result);
/** Retrieve all members of this family (e.g: french english german...) */
- bool getMembers(std::vector<std::string>&);
+ virtual bool getMembers(std::vector<std::string>&);
/** debug: list map for one member to stdout */
- bool listMap(const std::string& fam);
+ virtual bool listMap(const std::string& fam);
protected:
Xapian::Database m_rdb;
std::string m_prefix1;
- string entryprefix(const string& member)
+
+ virtual std::string entryprefix(const std::string& member)
{
return m_prefix1 + ":" + member + ":";
}
- string memberskey()
+ virtual std::string memberskey()
{
return m_prefix1 + ";" + "members";
}
@@ -86,22 +87,32 @@
/** Delete all entries for one member (e.g. french), and remove from list
* of members */
- bool deleteMember(const std::string& membername);
+ virtual bool deleteMember(const std::string& membername);
/** Add to list of members. Idempotent, does not affect actual expansions */
- bool createMember(const std::string& membername);
+ virtual bool createMember(const std::string& membername);
/** Add expansion list for term inside family member (e.g., inside
* the french member, add expansion for familier -> familier,
* familierement, ... */
- bool addSynonyms(const string& membername,
- const string& term, const vector<string>& trans);
+ virtual bool addSynonyms(const std::string& membername,
+ const std::string& term,
+ const std::vector<std::string>& trans);
protected:
Xapian::WritableDatabase m_wdb;
};
+//
+// Prefixes are centrally defined here to avoid collisions
+//
+// Stem expansion family prefix. The family member name is the language
+static const std::string synFamStem("Stm");
+static const std::string synFamDiac("Dia");
+static const std::string synFamCase("Cse");
+
+
}
#endif /* _SYNFAMILY_H_INCLUDED_ */