2

我正在处理一个邮件列表存档,我的任务是设置基本搜索、布尔搜索以及最终某种更智能的基于标签的搜索。

我看到了商业产品和一些开源项目(如 Lucene.NET)

有没有其他人做过类似的工作?

我现在在 Win2k3 服务器上工作,所以立即想到的是使用 ASP Classic 或 ASP.NET。但是,如果有另一个平台可以更好地达到这个目的,那么我也会考虑。我不会因此而扔掉一些东西;)

4

2 回答 2

2

首先,你应该考虑你需要什么。

  • 您想在电子邮件存档中搜索什么?只是在电子邮件的 plein 数据中进行全文搜索?例如,您不会在使用 base64 编码的邮件中获得匹配项。您需要“现场”搜索吗?例如:仅在“主题”、“发件人”、“收件人”、“正文”、“附件”中搜索?
  • 您希望如何提供对邮件搜索的访问权限?通过网页?在命令行上?在某些 Windows 程序中?

如果你还没有,你应该检查你的数据是什么样子的。也许是“mbox”格式(一个文件与邮件纯文本连接)“maildir”(一个包含许多文件的目录,每个文件包含一封邮件),还是其他?

设置搜索引擎意味着考虑如何准备数据:

  • 电子邮件内部可以包含不同的数据。您将不得不处理 base64 编码数据、UTF-8 字符编码和附件。
  • 使用组邮件甚至可以拆分为多个电子邮件消息。
  • 如果要搜索不同的“字段”(“主题”、“日期”、“正文”),则需要提取它们。
  • 数据需要通过语言手段准备。您将需要找出邮件的语言(如果有多个)并处理数据,例如。搜索和,也许,mouse的概念的匹配;或和,取决于您的邮件列表的主题。miceratscursorpointing device

还要想想:

  • 未来是否会更新数据?
  • 是否有删除(包括稍后重新标记的消息)?

然后比较您喜欢的产品(商业或开源)它们已经提供了多少以及您必须自己编写什么。请注意,提供搜索体验不仅仅是下载搜索引擎并投入大量数据

于 2013-02-18T15:04:08.283 回答
2

由于您正在设置邮件搜索,您将需要两件事:搜索引擎和数据库。有许多搜索引擎可以提供您需要的内容。

  • 狮身人面像
  • Solr(Lucene 和 Solr 现已合并)
  • PostgreSQL(内置搜索)

他们提供高级搜索工具,如关键字、字段限制搜索、布尔查询、短语搜索等。这是另一篇关于各种文本搜索引擎的 SO 帖子:全文搜索引擎的比较 - Lucene、Sphinx、Postgresql、MySQL?

Sphinx 和 Solr 的搜索速度非常快。Sphinx 进行完整的数据库搜索,也进行部分索引。Solr 使用基于索引的搜索,并且具有几乎线性的性能可扩展。

第二个最重要的选择是存储邮件的数据库。邮件将采用某种格式(模式),例如表格中的字段。不使用任何格式是很疯狂的。这不是文件搜索,对吧?一些搜索引擎需要特定的数据库才能工作。Sphinx 仅使用 SQL 数据库,Solr 可以与 noSQL 数据库集成。

如果您不担心扩展问题(您有成千上万的用户,拥有 GB 的数据,需要实时性能),那么您可以使用 SQL 数据库。否则,您将不得不在 Solr 中使用 noSQL 数据库。

SQL 数据库(如 PostgreSQL)使用起来最简单,可以做您需要的事情,并且需要最少的设置/工作。连接器将允许您将查询(邮件搜索)从浏览器发送到您的数据库。

你还说你使用 Win2k3,你必须切换到 linux 发行版才能利用这些搜索引擎。Win2k3 很慢,不能提供与 linux 发行版相媲美的性能。

于 2013-02-23T13:50:48.940 回答