spmmer filter
git-svn-id: svn://192.168.0.12/source@178 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -1300,13 +1300,22 @@ bool QSortSpamer(const SSpamer &st1, const SSpamer &st2)
|
||||
return st1.m_dSpammerValue > st2.m_dSpammerValue;
|
||||
}
|
||||
|
||||
struct SSpammerMap
|
||||
{
|
||||
int m_nReply_num;
|
||||
int m_nBody_num;
|
||||
int m_nId_num;
|
||||
};
|
||||
|
||||
void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum)
|
||||
{
|
||||
QMap<QString,SSpamer> mapSpamer;
|
||||
|
||||
ReloadData();
|
||||
InsertLog("Spamer Data Filter Run Start ");
|
||||
DataFilter(_strFilter);
|
||||
InsertLog("Spamer Data Filter Run End ");
|
||||
QVector <SSpammerMap> vecSpammerMap[E_ARTICLE_MAX];
|
||||
{
|
||||
InsertLog("Spamer Rank Count Make Start ");
|
||||
if (m_bDataFlag[E_ARTICLE_BODY] == true)
|
||||
@@ -1325,6 +1334,12 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
mapSpamer[strKey].m_dBodycount+=1.0;
|
||||
|
||||
SSpammerMap stSpammerMap;
|
||||
QString strURL = strlist[m_nUrlColumn].trimmed();
|
||||
stSpammerMap.m_nBody_num = m_mapData[strURL].m_nNum;
|
||||
stSpammerMap.m_nId_num = m_mapID[strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum;
|
||||
vecSpammerMap[E_ARTICLE_BODY].push_back(stSpammerMap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1344,39 +1359,63 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
mapSpamer[strKey].m_dReplycount+=1.0;
|
||||
|
||||
SSpammerMap stSpammerMap;
|
||||
QString strURL = strlist[m_nUrlColumn].trimmed();
|
||||
stSpammerMap.m_nBody_num = m_mapData[strURL].m_nNum;
|
||||
QString strSpammerReplyKey = QString::number(stSpammerMap.m_nBody_num) + "_" + strlist[m_anData[E_DATA_article_order]].trimmed();
|
||||
stSpammerMap.m_nReply_num = m_mapSpammerReply[strSpammerReplyKey];
|
||||
stSpammerMap.m_nId_num = m_mapID[strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum;
|
||||
vecSpammerMap[E_ARTICLE_REPLY].push_back(stSpammerMap);
|
||||
}
|
||||
}
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
|
||||
if (!m_bDataFlag[E_ARTICLE_BODY] && !m_bDataFlag[E_ARTICLE_REPLY])
|
||||
{
|
||||
if (stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue;
|
||||
QString strKey = stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapSpamer.contains(strKey) == false)
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
{
|
||||
SSpamer stSpamer;
|
||||
stSpamer.m_strKey = strKey;
|
||||
stSpamer.m_strNickname = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
//mapSpamer[strKey].m_dBodycount+=1.0;
|
||||
mapSpamer[strKey].m_setNick.insert(stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed());
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
QString strKey = stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue;
|
||||
QString strKey = stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapSpamer.contains(strKey) == false)
|
||||
{
|
||||
SSpamer stSpamer;
|
||||
stSpamer.m_strKey = strKey;
|
||||
stSpamer.m_strNickname = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
stSpamer.m_strNickname = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
//mapSpamer[strKey].m_dReplycount+=1.0;
|
||||
QString strReKey = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
if (mapSpamer[strKey].m_setNick.contains(strReKey) == false)
|
||||
mapSpamer[strKey].m_setNick.insert(strReKey);
|
||||
|
||||
SSpammerMap stSpammerMap;
|
||||
stSpammerMap.m_nBody_num = stBody.m_nNum;
|
||||
stSpammerMap.m_nId_num = m_mapID[stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum;
|
||||
vecSpammerMap[E_ARTICLE_BODY].push_back(stSpammerMap);
|
||||
|
||||
mapSpamer[strKey].m_setNick.insert(stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed());
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
QString strKey = stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapSpamer.contains(strKey) == false)
|
||||
{
|
||||
SSpamer stSpamer;
|
||||
stSpamer.m_strKey = strKey;
|
||||
stSpamer.m_strNickname = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
|
||||
SSpammerMap stSpammerMap;
|
||||
stSpammerMap.m_nBody_num = stBody.m_nNum;
|
||||
stSpammerMap.m_nId_num = m_mapID[stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum;
|
||||
QString strSpammerReplyKey = QString::number(stSpammerMap.m_nBody_num) + "_" + stReply.m_strlist[m_anData[E_DATA_article_order]].trimmed();
|
||||
stSpammerMap.m_nReply_num = m_mapSpammerReply[strSpammerReplyKey];
|
||||
vecSpammerMap[E_ARTICLE_REPLY].push_back(stSpammerMap);
|
||||
|
||||
QString strReKey = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
if (mapSpamer[strKey].m_setNick.contains(strReKey) == false)
|
||||
mapSpamer[strKey].m_setNick.insert(strReKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1421,6 +1460,12 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
strQuery = "delete from spammer where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from body_spammer_map_" + _strCompanyNum + "_update";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from reply_spammer_map_" + _strCompanyNum + "_update";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
QMap <QString,int> mapPlatformnameCount;
|
||||
|
||||
foreach(QString str,m_mapPlatformname.keys())
|
||||
@@ -1429,6 +1474,7 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
UpdateDBInfoState(m_db,_strCompanyNum,"Spammer (Insert)");
|
||||
|
||||
int nCount = 1;
|
||||
QSet <int> setId;
|
||||
foreach(SSpamer stIn,list)
|
||||
{
|
||||
QStringList strList = stIn.m_strKey.split(",");
|
||||
@@ -1436,8 +1482,11 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
QString strPlatformname = strList[0].trimmed();
|
||||
if (strID.isEmpty()) continue;
|
||||
if (strPlatformname.isEmpty()) continue;
|
||||
int nID = m_mapID[strID].m_nNum;
|
||||
QString strValue;
|
||||
strValue += QString::number(m_mapID[strID].m_nNum) + ",'";
|
||||
if (setId.contains(nID)==false)
|
||||
setId.insert(nID);
|
||||
strValue += QString::number(nID) + ",'";
|
||||
strValue += strID + "',";
|
||||
strValue += QString::number(stIn.m_setNick.size()) + ",";
|
||||
strValue += QString::number((int)stIn.m_dBodycount) + ",";
|
||||
@@ -1469,6 +1518,47 @@ void SFilterProcess::DataSpammersCount(QString _strFilter,QString _strCompanyNum
|
||||
}
|
||||
nCount++;
|
||||
}
|
||||
{
|
||||
nCount=1;
|
||||
foreach(SSpammerMap stMap,vecSpammerMap[E_ARTICLE_BODY])
|
||||
{
|
||||
if(setId.contains(stMap.m_nId_num)==false) continue;
|
||||
strQuery = "insert into body_spammer_map_";
|
||||
strQuery += _strCompanyNum + "_update";
|
||||
strQuery += " (num,body_num,id_num) VALUES (";
|
||||
strQuery += QString::number(nCount++) + ",";
|
||||
strQuery += QString::number(stMap.m_nBody_num) + ",";
|
||||
strQuery += QString::number(stMap.m_nId_num) + ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false)
|
||||
{
|
||||
qDebug() << strQuery;InsertLog(query.lastError().text());
|
||||
InsertLog(strQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
nCount=1;
|
||||
foreach(SSpammerMap stMap,vecSpammerMap[E_ARTICLE_REPLY])
|
||||
{
|
||||
if(setId.contains(stMap.m_nId_num)==false) continue;
|
||||
strQuery = "insert into reply_spammer_map_";
|
||||
strQuery += _strCompanyNum + "_update";
|
||||
strQuery += " (num,body_num,reply_num,id_num) VALUES (";
|
||||
strQuery += QString::number(nCount++) + ",";
|
||||
strQuery += QString::number(stMap.m_nBody_num) + ",";
|
||||
strQuery += QString::number(stMap.m_nReply_num) + ",";
|
||||
strQuery += QString::number(stMap.m_nId_num) + ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false)
|
||||
{
|
||||
qDebug() << strQuery;InsertLog(query.lastError().text());
|
||||
InsertLog(strQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RenameTable("body_spammer_map_" + _strCompanyNum,"body_spammer_map_" + _strCompanyNum + "_update","body_spammer_map_" + _strCompanyNum +"_temp");
|
||||
RenameTable("reply_spammer_map_" + _strCompanyNum,"reply_spammer_map_" + _strCompanyNum + "_update","reply_spammer_map_" + _strCompanyNum +"_temp");
|
||||
|
||||
//influencercount
|
||||
strQuery = "update dbinfo set "
|
||||
@@ -1907,7 +1997,7 @@ void SFilterProcess::DataPut(QString _strCompanyNum)
|
||||
strQuery = "delete from reply_" + _strCompanyNum + "_update";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from body_category_map_" + _strCompanyNum + "_update";
|
||||
strQuery = "delete from body_consumer_map_" + _strCompanyNum + "_update";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from id_" + _strCompanyNum + "_update";
|
||||
@@ -1922,7 +2012,7 @@ void SFilterProcess::DataPut(QString _strCompanyNum)
|
||||
QString strReplyQuery = QString("insert into reply_" + _strCompanyNum + "_update (num,id_num,nickname_num,community_num,id_id,parent,data,date,body_num,realbycategorynum) VALUES (:NUM,:ID_NUM,:NICKNAME_NUM,:COMMUNITY_NUM,:ID_ID,:PARENT,:DATA,:DATE,:BODY_NUM,:REALBYCATEGORYNUM)").toUtf8();
|
||||
QString strBodyQuery = QString("insert into body_" + _strCompanyNum + "_update(num,id_num,nickname_num,community_num,id_id,platformname_num,platformform_num, title, data, url, view, date, reply_startnum, reply_endnum, reply_count, lastupdate, realbycategorynum)"
|
||||
" VALUES (:NUM,:ID_NUM,:NICKNAME_NUM,:COMMUNITY_NUM,:ID_ID,:PLATFORMNAME_NUM,:PLATFORMFORM_NUM,:TITLE,:DATA,:URL,:VIEW,:DATE,:REPLY_STARTNUM,:REPLY_ENDNUM,:REPLY_COUNT,:LASTUPDATE,:REALBYCATEGORYNUM)").toUtf8();
|
||||
QString strMapQuery = QString("insert into body_category_map_" + _strCompanyNum + "_update (num,body_num,category_num,realin) VALUES (:NUM,:BODY_NUM,:CATEGORY_NUM,:REALIN)").toUtf8();
|
||||
QString strMapQuery = QString("insert into body_consumer_map_" + _strCompanyNum + "_update (num,body_num,category_num,realin) VALUES (:NUM,:BODY_NUM,:CATEGORY_NUM,:REALIN)").toUtf8();
|
||||
|
||||
QString strCommunityQuery = QString("insert into community_" + _strCompanyNum + "_update (num,id,title,url,exid,platformname_num,platformform_num) values (");
|
||||
|
||||
@@ -1938,7 +2028,8 @@ void SFilterProcess::DataPut(QString _strCompanyNum)
|
||||
strQuery += "," + QString::number(stCommunity.m_nPlatformname);
|
||||
strQuery += "," + QString::number(stCommunity.m_nPlatformform);
|
||||
strQuery += ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {
|
||||
if(query.exec(strQuery.toUtf8()) == false)
|
||||
{
|
||||
InsertLog(query.lastError().text());m_db.close();qDebug() << strQuery;return;
|
||||
}
|
||||
}
|
||||
@@ -1998,6 +2089,10 @@ void SFilterProcess::DataPut(QString _strCompanyNum)
|
||||
if (query.exec()==false){
|
||||
InsertLog(query.lastError().text());m_db.close();return;
|
||||
}
|
||||
{
|
||||
QString strSpammerReplyKey = QString::number(m_mapData[strUrl].m_nNum) + "_" + stReply.m_strlist[m_anData[E_DATA_article_order]].trimmed();
|
||||
m_mapSpammerReply.insert(strSpammerReplyKey,nReplyCount);
|
||||
}
|
||||
nReplyCount++;
|
||||
}
|
||||
query.prepare(strBodyQuery);
|
||||
@@ -2118,7 +2213,7 @@ void SFilterProcess::DataPut(QString _strCompanyNum)
|
||||
|
||||
RenameTable("body_" + _strCompanyNum,"body_" + _strCompanyNum + "_update","body_" + _strCompanyNum +"_temp");
|
||||
RenameTable("reply_" + _strCompanyNum,"reply_" + _strCompanyNum + "_update","reply_" + _strCompanyNum + "_temp");
|
||||
RenameTable("body_category_map_" + _strCompanyNum,"body_category_map_" + _strCompanyNum + "_update","body_category_map_" + _strCompanyNum + "_temp");
|
||||
RenameTable("body_consumer_map_" + _strCompanyNum,"body_consumer_map_" + _strCompanyNum + "_update","body_consumer_map_" + _strCompanyNum + "_temp");
|
||||
RenameTable("id_" + _strCompanyNum,"id_" + _strCompanyNum + "_update","id_" + _strCompanyNum + "_temp");
|
||||
RenameTable("nickname_" + _strCompanyNum,"nickname_" + _strCompanyNum + "_update","nickname_" + _strCompanyNum + "_temp");
|
||||
RenameTable("community_" + _strCompanyNum,"community_" + _strCompanyNum + "_update","community_" + _strCompanyNum + "_temp");
|
||||
|
||||
@@ -259,6 +259,7 @@ private:
|
||||
int m_nCutDays;
|
||||
|
||||
QVector <SKeyword> m_vecKeyword;
|
||||
QMap <QString,int> m_mapSpammerReply;
|
||||
|
||||
private:
|
||||
bool LockTable(QString _strTable);
|
||||
|
||||
Reference in New Issue
Block a user