--- a/src/query/wasatorcl.cpp
+++ b/src/query/wasatorcl.cpp
@@ -166,6 +166,9 @@
}
// "Regular" processing follows:
+ unsigned int mods = (unsigned int)(*it)->m_modifiers;
+ nclause = 0;
+
switch ((*it)->m_op) {
case WasaQuery::OP_NULL:
case WasaQuery::OP_AND:
@@ -191,8 +194,6 @@
}
}
}
-
- unsigned int mods = (unsigned int)(*it)->m_modifiers;
// I'm not sure I understand the phrase/near detection
// thereafter anymore, maybe it would be better to have an
@@ -216,12 +217,6 @@
LOGERR(("wasaQueryToRcl: out of memory\n"));
return 0;
}
- if (mods & WasaQuery::WQM_NOSTEM) {
- nclause->addModifier(Rcl::SearchDataClause::SDCM_NOSTEMMING);
- }
- if ((*it)->m_weight != 1.0)
- nclause->setWeight((*it)->m_weight);
- sdata->addClause(nclause);
}
break;
@@ -248,11 +243,6 @@
LOGERR(("wasaQueryToRcl: out of memory\n"));
return 0;
}
- if ((*it)->m_modifiers & WasaQuery::WQM_NOSTEM)
- nclause->setModifiers(Rcl::SearchDataClause::SDCM_NOSTEMMING);
- if ((*it)->m_weight != 1.0)
- nclause->setWeight((*it)->m_weight);
- sdata->addClause(nclause);
break;
case WasaQuery::OP_OR:
@@ -272,10 +262,17 @@
reason = "Out of memory";
return 0;
}
- if ((*it)->m_modifiers & WasaQuery::WQM_NOSTEM)
- nclause->setModifiers(Rcl::SearchDataClause::SDCM_NOSTEMMING);
- sdata->addClause(nclause);
}
+
+ if (mods & WasaQuery::WQM_NOSTEM)
+ nclause->addModifier(Rcl::SearchDataClause::SDCM_NOSTEMMING);
+ if (mods & WasaQuery::WQM_DIACSENS)
+ nclause->addModifier(Rcl::SearchDataClause::SDCM_DIACSENS);
+ if (mods & WasaQuery::WQM_CASESENS)
+ nclause->addModifier(Rcl::SearchDataClause::SDCM_CASESENS);
+ if ((*it)->m_weight != 1.0)
+ nclause->setWeight((*it)->m_weight);
+ sdata->addClause(nclause);
}
return sdata;