Support CGI parameter synonym_weight

This commit is contained in:
Ivan Skytte Jørgensen
2017-01-20 14:52:54 +01:00
parent 02c8d35638
commit 1123e4fe2f
7 changed files with 19 additions and 2 deletions

@ -49,6 +49,7 @@ void Msg39Request::reset() {
m_collnum = -1;
m_useQueryStopWords = true;
m_doMaxScoreAlgo = true;
m_synonymWeight = 0.9;
m_usePageTemperatureForRanking = true;
for(int i=0; i<26; i++)
m_flagScoreMultiplier[i] = 1.0;

@ -56,6 +56,7 @@ class Msg39Request {
bool m_allowHighFrequencyTermCache;
bool m_doMaxScoreAlgo;
float m_synonymWeight;
bool m_usePageTemperatureForRanking;
float m_flagScoreMultiplier[26];

@ -324,6 +324,7 @@ bool Msg40::federatedLoop ( ) {
mr.m_hideAllClustered = m_si->m_hideAllClustered;
mr.m_familyFilter = m_si->m_familyFilter;
mr.m_doMaxScoreAlgo = m_si->m_doMaxScoreAlgo;
mr.m_synonymWeight = m_si->m_synonymWeight;
mr.m_usePageTemperatureForRanking = m_si->m_usePageTemperatureForRanking;
memcpy(mr.m_flagScoreMultiplier, m_si->m_flagScoreMultiplier, sizeof(mr.m_flagScoreMultiplier));
memcpy(mr.m_flagRankAdjustment, m_si->m_flagRankAdjustment, sizeof(mr.m_flagRankAdjustment));

@ -3766,6 +3766,18 @@ void Parms::init ( ) {
m->m_flags = PF_HIDDEN | PF_NOSAVE;
m++;
m->m_title = "Synonym weight";
m->m_desc = "Weight of synonyms in relation to original words";
m->m_cgi = "synonym_weight";
m->m_obj = OBJ_SI;
m->m_off = offsetof(SearchInput,m_synonymWeight);
m->m_defOff2 = offsetof(Conf,m_synonymWeight);
m->m_type = TYPE_FLOAT;
m->m_def = "0.900000";
m->m_flags = PF_HIDDEN | PF_NOSAVE;
m->m_page = PAGE_RESULTS;
m++;
m->m_title = "Use page temperature";
m->m_desc = "Use page temperature (if available) for ranking";
m->m_cgi = "use_page_temperature";

@ -279,8 +279,8 @@ float PosdbTable::getBestScoreSumForSingleTerm(int32_t i, const char *wpi, const
// synonym
if ( Posdb::getIsSynonym(wpi) ) {
score *= g_conf.m_synonymWeight;
score *= g_conf.m_synonymWeight;
score *= m_msg39req->m_synonymWeight;
score *= m_msg39req->m_synonymWeight;
}

@ -65,6 +65,7 @@ SearchInput::SearchInput() {
m_askOtherShards = false;
memset(m_queryId, 0, sizeof(m_queryId));
m_doMaxScoreAlgo = false;
m_synonymWeight = 0.9;
m_usePageTemperatureForRanking = true;
m_numFlagScoreMultipliers=26;
for(int i=0; i<26; i++)

@ -152,6 +152,7 @@ public:
bool m_doDupContentRemoval; // msg40
bool m_getDocIdScoringInfo;
float m_synonymWeight;
bool m_usePageTemperatureForRanking;
int32_t m_numFlagScoreMultipliers;