我正在使用数据库构建应用程序。我有一个words
表,每次用户键入内容时,此应用程序都会记录和更新数据库中的单词。
并且用户输入一个匹配的单词后,frequency
字段将自动增加。
但是麻烦是用户类型每天都在增加,我担心搜索性能会随着时间的流逝而降低,而且Int字段有一天会达到限制(max limit Int)。
因此,我将数据库限制为少于50.000条记录。一段时间后,我删除了较少使用的记录。
但是我不知道如何处理每个单词的frequency
Int字段?如何准确地知道每个单词的频率用法而不会永远增加该字段?
如果随后发现4个新出现的MAN,则要将4个添加到该字段中。您无法直接添加日志值,因为log(x)+ log(y)= log(x * y)。 (See the Logarithm Rules section of this article for more information on log rules。)
相反,假设您使用以10为底的对数,则可以使用以下公式:设置频率= log(10 ^ frequency + 4)
无论如何,有以下几种防止溢出的方法:
您可以检测到它,然后撤消操作,将所有内容按比例缩小两倍,然后重做。
1.0 / (oldValue + 1)
或2 ** -oldValue
的概率进行增量。后者导致对数增长,但与其他答案中的想法不同,它是有效的。