delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

14 Feb 2013

dovecot的全文搜索

试了一下这个基于 CLucene 的全文搜索,似乎还不错。这里记一下过程。

首先是给 dovecot 安装 Lucene 插件,用 FreeBSD port 来安装的话,只需 make config,选择 LUCENE 然后 portmaster dovecot 即可。

配置也还算容易,我之前已经做了索引与数据分开,因此并不需要单独的配置,只需在 dovecot.conf 中增加:


plugin {
  fts = lucene
  # Lucene-specific settings, good ones are:
  fts_lucene = whitespace_chars=@.
}

然后重启 dovecot,运行 doveadm index -A ‘*’ 就行了。注意,-A需要userdb的支持。

日常维护方面,目前 dovecot 预设是在搜索的时候重新抓取索引,而邮件送达时则不会做任何其他处理。我目前用的解法是让 cron 每隔 11 分钟跑一次 doveadm index -A INBOX 来重做 INBOX 的索引。另外,用 FreeBSD 的 periodic 每天更新一次全部索引 (doveadm index -A ‘*'),并在每月做一次 doveadm fts rescan -A(这个其实并不是必须的,主要是防止出现直接操作Mailbox时出现不一致的情况)。