예제 #1
0
파일: search.py 프로젝트: ThomasMarcel/thas
	def search(self, text):
		self.text = text.lower().replace('\n', ' ').replace('\r', ' ').replace('\t', ' ')
                self.purgedlist = []
                for punct in self.punctuation:
                        self.text = self.text.replace(punct, ' ')
                for word in self.text.split(' '):
                        if word not in self.garbage and word != '':
                                self.purgedlist.append(word)
		wordlist = []
		sortedlist = []
		for pword in self.purgedlist:
			keywords = Keyword.all().filter("word =", pword).run()
			for keyword in keywords:
				worddict = {'word': keyword.word, 'key': keyword.entitykey, 'type': keyword.wordtype}
				wordlist.append(worddict)
		wordlist = sorted(wordlist, key=lambda k: k['key'])
		try:
			if len(wordlist) > 0:
				entry = Entry.get(wordlist[0]['key'])
				worddict = {'word': [wordlist[0]['word']], 'key': wordlist[0]['key'], 'type': [wordlist[0]['type']], 'entitytype': 'Blog', 'commonwords': 1, 'entrytitle': entry.title, 'entrydesc': entry.body.replace('\r', ' ').replace('\n', ' ').replace('\t', ' ')[0:300], 'entityid': entry.key().id()}
				for i in range(len(wordlist)):
					logging.info(str(i) + ' - ' + str(wordlist[i]))
					if i == 0:
						pass
					else:
						if wordlist[i]['key'] == worddict['key']:
							if wordlist[i]['word'] not in worddict['word']:
								worddict['word'].append(wordlist[i]['word'])
								worddict['commonwords'] += 1
							if wordlist[i]['type'] not in worddict['type']:
								worddict['type'].append(wordlist[i]['type'])
						else:
							sortedlist.append(worddict)
							entry = Entry.get(wordlist[i]['key'])
							worddict = {'word': [wordlist[i]['word']], 'key': wordlist[i]['key'], 'type': [wordlist[i]['type']], 'entitytype': 'Blog', 'commonwords': 1, 'entrytitle': entry.title, 'entrydesc': entry.body.replace('\r', ' ').replace('\n', ' ').replace('\t', ' ')[0:300], 'entityid': entry.key().id()}
				sortedlist.append(worddict)
		except KeyError:
			logging.error('KeyError')
		return sorted(sortedlist, key=lambda k: k['commonwords'], reverse=True)