0

我的函数解析文本并删除短词,例如“a”、“the”、“in”、“on”、“at”等。

将来可能会修改这些单词的列表。此外,在不同列表之间切换(即,针对不同语言)也可能是一种选择。

那么,我应该在哪里存储这样的列表?

  • 约50-200字
  • 每分钟阅读很多次
  • 几乎没有写入(修改)——例如,几个月一次

我有这些选择:

  1. 代码中的列表(最快,但听起来不是一个好习惯)
  2. 一个单独的文件“stop_words.txt”(从文件中读取的速度有多快?我应该每隔几秒钟从同一个文件中读取相同的数据吗?我调用同一个函数?)
  3. 一个数据库表。当单词列表应该几乎是静态的时,它真的有效吗?

我正在使用 Ruby on Rails(如果这有什么不同的话)。

4

2 回答 2

2

由于需要快速查找停用词,因此我会将停用词存储在哈希表中。这样,验证一个词是否是停用词已经摊销了 O(1) 复杂度。

现在,由于停用词列表可能会更改,因此将列表保存在文本文件中并在程序启动时读取该文件(或者如果您的程序连续运行,则每隔几分钟/在文件修改时)读取该文件是有意义的。

于 2011-01-25T10:33:32.943 回答
2

如果只有 50-200 字左右,我会把它存储在内存中的支持快速查找的数据结构中,比如哈希映射(我不知道这种结构在 Ruby 中叫什么)。

您可以使用选项 2 或 3(将数据保存在文件或数据库表中,具体取决于对您来说更容易),然后在应用程序启动时将数据读入内存。存储读取数据的时间,如果有请求进来并且数据在 X 分钟内没有更新,则从持久存储重新读取它。

这基本上是一个缓存。Ruby on Rails 可能已经提供了这样的机制,但我对此知之甚少,无法回答这个问题。

于 2011-01-25T10:34:15.797 回答