Beispiel #1
0
import MySQLdb as mdb
import querying as ql
from copy import copy
from operator import itemgetter
while(1) :
	query = raw_input("Enter Query")
	if(query == 'exit'):
        	break;
	cosineResults = ql.querying(query)
	con = mdb.connect('localhost', 'root', 'javar', 'nkj255-db1')
	if(len(cosineResults) == 1 and cosineResults[0]==-1) :
		break;
	print "Cosine Rsults  = ",cosineResults
        with con :
        	cur = con.cursor(mdb.cursors.DictCursor)
		cosine = []
		ppIDScore = []
		pageScore = []
		postScore = []
		postLen = []
        	for postPageId in cosineResults:
			postId = postPageId[0].split("_")[1]
			pageId = postPageId[0].split("_")[0]	
                  	cur.execute("SELECT * FROM PostInfo,PageInfo WHERE PageInfo.pageID = PostInfo.pageID  and PostInfo.postID=%s and PostInfo.pageID=%s ORDER BY date ASC",(postId,pageId))
                  	row = cur.fetchone()
			if not row :
				continue 
			print "row = ",row
		        cosine.append( float(postPageId[1]) )	
			likes = row["likes"]
			comments = row["comments"]
def staticRanking(query) :
	if(query == 'exit'):
        	return [-1];
	cosineResults = ql.querying(query)
	print "Retrieved cosine resulst"	
	con = mdb.connect('localhost', 'root', 'javar', 'nkj255-db1')
	print "got the connection"
	if(len(cosineResults) == 0) :
		return [-1]
	if(len(cosineResults) == 1 and cosineResults[0]==-1) :
		return [-1]
	#print "Cosine Rsults  = ",cosineResults
        with con :
        	cur = con.cursor(mdb.cursors.DictCursor)
		cosine = []
		cosineNorm = []
		ppIDScore = []
		
		pageScore = []
		pageScoreNorm = []
		postScore = []
		postScoreNorm = []
	        postLen = []
		postLenNorm = []
		postList = []
		postListNorm = []
		epochTime = []
		epochTimeNorm = []
		post  = str("")
		iden = []	
        	for postPageId in cosineResults:
			postId = postPageId[0].split("_")[1]
			pageId = postPageId[0].split("_")[0]	
                  	cur.execute("SELECT * FROM PostInfo,PageInfo WHERE PageInfo.pageID = PostInfo.pageID  and PostInfo.postID=%s and PostInfo.pageID=%s ORDER BY date ASC",(postId,pageId))
                  	row = cur.fetchone()
			if not row :
				continue 
			post = row["post"]
			if(len(post) > 40 ) :
				#print "row = ",row
		        	cosine.append( float(postPageId[1]) )
				cosineNorm.append(float(postPageId[1]))	
				iden.append(postPageId[0])
				
				likes = row["likes"]
				comments = row["comments"]
				shares = row["shares"]
				pageLikes = row["PageInfo.likes"]
				postScore.append( likes+shares+comments	)
				pageScore.append( pageLikes )
				postLen.append(len(post))
				postList.append(post)
				postScoreNorm.append( likes+shares+comments	)
				pageScoreNorm.append( pageLikes )
				postLenNorm.append(len(post))
				postListNorm.append(post)

				date = row["date"].split("-")
				s = str(date[2])+"/"+str(date[1])+"/"+str(date[0])	
                                epochTime.append(time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple()))
				epochTimeNorm.append(time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple()))				
				#print "postId = ",postId," pageId = ",pageId	
		#if(len(pageScore) > 0 ) :
		f = open("featureValue","rb+")
		paraDict = pickle.load(f)
		f.close()
		maxPageScore = paraDict["pageScoreMax"]
		minPageScore = paraDict["pageScoreMin"]
		maxPostScore = paraDict["postScoreMax"]
		minPostScore = paraDict["postScoreMin"]
		maxCosineScore = paraDict["cosineScoreMax"]
		minCosineScore = paraDict["cosineScoreMin"]
		maxPostLength = paraDict["postLenMax"]
		minPostLength = paraDict["postLenMin"]
		maxDate = paraDict["epochScoreMax"]
		minDate = paraDict["epochScoreMin"]
		cosineParam = paraDict["cosineParam"]
		pageScoreParam = paraDict["pageScoreParam"]
		postScoreParam = paraDict["postScoreParam"]
		epochScoreParam = paraDict["epochScoreParam"]
		postLenParam = paraDict["postLenParam"]
		static = True
		if(static ) :
			maxPageScore = max(pageScore)
			minPageScore = min(pageScore)
			minPostScore = max(postScore)
			maxPostScore = min(postScore)
			maxCosineScore = max(cosine)
			minCosineScore = min(cosine)
			maxPostLength = max(postLen)
			minPostLength = min(postLen)
			maxDate = max(epochTime)
			minDate = min(epochTime)
			pageScoreParam = 0.1
			cosineScoreParam = 0.7
			postScoreParam = 0.1
			epochScoreParam = 0.1	
			postLenParam = 0.0
		index = 0
		while index < len(cosine) :
			if (float(maxCosineScore) - float(minCosineScore)) > 0  :
				cosineNorm[index] = (float(cosine[index]) - float(minCosineScore))	/ (float(maxCosineScore) - float(minCosineScore))
			if (float(maxPageScore) - float(minPageScore)) > 0 :
				pageScoreNorm[index] = (float(pageScore[index]) - float(minPageScore)) / (float(maxPageScore) - float(minPageScore))
			if (float(maxPostScore) - float(minPostScore)) > 0 :
				postScoreNorm[index] = (float(postScore[index]) - float(minPostScore)) / (float(maxPostScore) - float(minPostScore))
			if (float(maxPostLength) - float(minPostLength)) > 0 :
				postLenNorm[index] = (float(postLen[index]) - float(minPostLength)) / (float(maxPostLength) - float(minPostLength))
			if (float(maxDate) - float(minDate) ) :
				epochTimeNorm[index] = (float(epochTime[index]) - float(minDate)) / (float(maxDate) - float(minDate))

		        val = cosineParam * (float(cosineNorm[index])) + pageScoreParam*(float(pageScoreNorm[index])) + postScoreParam*(float(postScoreNorm[index])) + 0*(float(postLenNorm[index])) + epochScoreParam *(float(epochTimeNorm[index]))
			ppIDScore.append([iden[index],copy(val),cosineNorm[index],pageScoreNorm[index],postScoreNorm[index],postLenNorm[index],epochTimeNorm[index],postList[index]])
			index = index + 1
                index = 0
		ppIDScore.sort(key=itemgetter(1),reverse=True)
		#while index < len(cosine) :
		#	print "ID = ",ppIDScore[index][0]," score = ",ppIDScore[index][1]
		#	index = index + 1
		createTestcase = False;

		if( createTestcase ) :
			fo = open("./testcase/"+query, "wb+")
			index = 0	
			while index < len(cosine) and index<32:
				fo.write(postList[index])
				fo.write("\n")
				fo.write("$$$$\nSTART|")
				fo.write(str(cosine[index])+"|"+str(pageScore[index])+"|"+str(postScore[index])+"|"+str(epochTime[index])+"|"+str(postLen[index])+"||" )
				fo.write("\n$$$$\n")
				index = index + 1
			fo.close()	
				
	return ppIDScore