0

我有一个关于智能搜索功能实现的问题。例如,在各种电子邮件应用程序中考虑类似“智能邮箱”的内容。假设您将数据(电子邮件)存储在数据库中,并且根据要创建查询的字段,向最终用户提供不同的选项。此刻,让我们假设主题,动词,宾语的做法...如何实现智能搜索/邮箱功能的存储/检索?

例如,假设您有以下:

科目:消息,to_address,FROM_ADDRESS,主题,date_received
动词:包含,DOES_NOT_CONTAIN,is_equal_to ,greater_than,less_than
对象:???????


现在,如果不清楚,我想要一个表结构(虽然我不反对某种外部XMLesque文件)来存储(以及稍后检索/呈现)我的智能搜索条件/邮箱供以后使用。作为一个例子,使用SVO我可以很容易地存储然后重建一个查询“两个日期之间的日期” - 只需使用“日期大于”和“日期小于”。但是,如果在同样的智能搜索中,我想要在另一个标准之间进行“之间”或“与”操作?您可以看到它可能失控 - 不一定在查询创建中(因为这很简单),但是在选项演示和存储机制中。

也许我需要更细致地思考更多细节。也许我需要简单地允许用户为每个条目独立选择AND或OR,而不是使它成为ALL或NOTHING类型的智能搜索(即,而不是MATCH ALL或MATCH ANY,我只需要让他们选择 - 我只是不想让它变成Hydra)。

任何输入将不胜感激。如果问题有点不一致,我很抱歉。现在已经很晚了,我的大脑就是烤面包。

最好。

回答

0

最简单的方法是将所有邮箱信息存储在SQL数据库中,并将“主谓词对象”转换为SQL“where”子句。然后让SQL查询编译器为您完成工作。

这是Apple在Mail.app中所做的,它使用sqlite数据库来存储所有的消息头信息。