Switch to side-by-side view

--- a/src/rcldb/stemdb.cpp
+++ b/src/rcldb/stemdb.cpp
@@ -1,5 +1,5 @@
 #ifndef lint
-static char rcsid[] = "@(#$Id: stemdb.cpp,v 1.2 2006-05-02 09:49:06 dockes Exp $ (C) 2005 J.F.Dockes";
+static char rcsid[] = "@(#$Id: stemdb.cpp,v 1.3 2006-09-19 14:30:39 dockes Exp $ (C) 2005 J.F.Dockes";
 #endif
 
 /**
@@ -168,14 +168,10 @@
 	} else {
 	    // Changing stems 
 	    ++stemdiff;
-	    if (derivs.size() == 1) {
-		// Exactly one term stems to this. Check for the case where
-		// the stem itself exists as a term. The code above would not
-		// have inserted anything in this case.
-		if (xdb.term_exists(stem))
-		    derivs.push_back(stem);
-	    }
-	    if (derivs.size() > 1) {
+	    // We need an entry even if there is only one derivative
+	    // so that it is possible to search by entering the stem
+	    // even if it doesnt exist as a term
+	    if (derivs.size() >= 1) {
 		// Previous stem has multiple derivatives. Enter in db
 		++stemmultiple;
 		Xapian::Document newdocument;
@@ -237,6 +233,8 @@
 	}
 	Xapian::Document doc = sdb.get_document(*did);
 	string data = doc.get_data();
+
+	// Build expansion list from database data
 	// No need for a conftree, but we need to massage the data a little
 	string::size_type pos = data.find_first_of("=");
 	++pos;
@@ -244,8 +242,10 @@
 	if (pos == string::npos || pos1 == string::npos ||pos1 <= pos) { // ??
 	    explist.push_back(term);
 	    return explist;
-	}	    
+	}
 	stringToStrings(data.substr(pos, pos1-pos), explist);
+
+	// If the user term itself is not in the list, add it.
 	if (find(explist.begin(), explist.end(), term) == explist.end()) {
 	    explist.push_back(term);
 	}