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數據庫來存儲所有的消息頭信息。