--- a/src/query/plaintorich.cpp
+++ b/src/query/plaintorich.cpp
@@ -50,7 +50,10 @@
}
struct MatchEntry {
+ // Start/End byte offsets in the document text
pair<int, int> offs;
+ // Index of the search group this comes from: this is to relate a
+ // match to the original user input.
unsigned int grpidx;
MatchEntry(int sta, int sto, unsigned int idx)
: offs(sta, sto), grpidx(idx)
@@ -76,11 +79,31 @@
for (vector<vector<string> >::const_iterator vit = hdata.groups.begin();
vit != hdata.groups.end(); vit++) {
if (vit->size() == 1) {
- m_terms[vit->front()] = vit - hdata.groups.begin();
+#ifndef RCL_INDEX_STRIPCHARS
+ if (o_index_stripchars) {
+#endif
+ m_terms[vit->front()] = vit - hdata.groups.begin();
+#ifndef RCL_INDEX_STRIPCHARS
+ } else {
+ string dumb = vit->front();
+ unacmaybefold(vit->front(), dumb, "UTF-8", UNACOP_UNACFOLD);
+ m_terms[dumb] = vit - hdata.groups.begin();
+ }
+#endif
} else if (vit->size() > 1) {
for (vector<string>::const_iterator it = vit->begin();
it != vit->end(); it++) {
+#ifndef RCL_INDEX_STRIPCHARS
+ if (o_index_stripchars) {
+#endif
m_gterms.insert(*it);
+#ifndef RCL_INDEX_STRIPCHARS
+ } else {
+ string dumb = *it;
+ unacmaybefold(*it, dumb, "UTF-8", UNACOP_UNACFOLD);
+ m_gterms.insert(dumb);
+ }
+#endif
}
}
}