Привет, ты можешь использовать регулярное выражение и попробовать этот сценарий. Вы также можете изменить регулярное выражение в соответствии с приведенными ниже примерами проверки:
import re
key_words = [ "one", "two", "three"]
regex = "|".join(key_words)
log_lines = open("logcat", 'r')
lines = log_lines.readlines()
print filter(lambda x : re.search(regex,x), lines)
log_lines.close()
Лично, пока Вы имеете в распоряжении хорошие индексы, Вы идете об этом правильным путем. В зависимости от Вашего использования для производительности Вы могли бы постараться не поражать таблицу голосов, храня вторичную информацию количества, но в целом если необходимо отследить, КТО проголосовал за что-то, необходимо сделать это в способе, которым Вы перечислили.
Я не потрудился бы перемещаться в другую базу данных, если Вы ДЕЙСТВИТЕЛЬНО заинтересованы в SQL Server, Вы могли бы создать отдельную группу файлов для содержания его....., но скорее всего не необходимые.
Ну, да, но необходимо посмотреть на большее изображение. С миллионом частей СОДЕРЖАНИЯ:
(Размер Содержания)>> (Размер Голосов): где">>" означает "намного больше".
Если у Вас есть миллион частей содержания затем, это могло бы быть терабайтом данных, где, поскольку голоса составляют 400 МБ. Право грандиозного предприятия?
Я также добавил бы, если Вы волнуетесь по поводу масштабируемости, проверяете этот блог:
Если необходимо отследить, голосовал ли пользователь за конкретный объект, и если существуют различные значения голосования (так 1 звезда к 5 звездам, например), то это почти столь компактно, как это добирается.
Не забывайте, что для разумных скоростей доступа, необходимо будет индексировать данные (два индекса, вероятно - один с ContentID как ведущий столбец, один с идентификатором пользователя как ведущий столбец).
Необходимо будет решить, существует ли причина не сохранить таблицу отдельно от других таблиц. То, что это означает, зависит от DBMS, который Вы используете - с Informix, таблица была бы в той же базе данных, но сохраненный в другом dbspace, и Вам можно было бы сохранить индексы в двух других различных dbspaces.
Вы, вероятно, также захотите идентификатор автора содержания в таблице для более легкого обнаружения голосующего злоупотребления. (Да, это - по-видимому, избыточная информация. Альтернатива регулярно создает сводную таблицу для наблюдения, кто голосует по кого.)
Если это имеет значение таблица голосования perlmonks похожа на это:
`vote_id` int(11) NOT NULL default '0',
`voter_user` int(11) NOT NULL default '0',
`voted_user` int(11) default NULL,
`weight` int(11) NOT NULL default '0',
`votetime` datetime NOT NULL default '0000-00-00 00:00:00',
`ip` varchar(16) default NULL,
PRIMARY KEY (`vote_id`,`voter_user`),
KEY `voter_user_idx` (`voter_user`,`votetime`),
KEY `voted_user_idx` (`voted_user`,`votetime`)
(vote_id идентификатор содержания, IP является IP-адресом.)