2012-03-19 114 views
1

我的要求是收集的Lotus Notes其中,對於一個給定的搜索項,包含兩種文件:如何使用搜索方法對Lotus Notes文檔搜索

  • 所有這些條款,
  • 任何這些條款
  • 或者沒有使用這些術語。

我正在使用Database.FTsearch(...)方法,通過爲特定短語生成查詢並將查詢傳遞給該方法。我發現還有另一種方法:Database.search(string arg1)。我如何在上述三個條件中使用該方法?

+0

如果FTSearch是更快的解決方案,是什麼讓你詢問搜索?你對FTSearch有問題嗎? – 2012-03-20 11:13:12

回答

4

NotesDatabase search method取式字符串作爲其第一個參數。您可以通過如下公式:

@Contains(Body; "Word1") || @Contains(Body; "Word2") || @Contains(Body; "Word3") 

如果三個單詞中的任何一個在主體中,那麼將匹配文檔。爲了使匹配對攻戰,只是改變的OR(||),以與運算(& &)。

注意,此方法通過一個沒有索引的所有文件搜索,並且可能會很慢,如果有數以千計的文件。 FTSearch method速度更快,但要求您打開全文索引以高效工作。

+1

正如我的測試,它應該是@Contains(Body;「Word1」)| @Contains(Body;「Word2」)| @Contains(Body;「Word3」)。 – Matt 2012-10-02 12:37:04

+0

@Matt也許這取決於我們是在談論Java中的公式還是LotusScript中的公式 – bluish 2015-09-10 07:59:17

0

多米諾wiki有an excellent discussion of when to use each search method and how to use them

請記住,即使將全文索引設置爲「立即更新」,FTSearch的索引也不會立即更新。如果您需要最新的結果,您需要先調用Database.updateFTIndex(這會影響性能)或使用Database.search。

還銘記保持這種翻譯您的FT查詢可能不完全明瞭。如果您正在構建諸如「Term1 OR Term2 OR Term3」之類的簡單查詢,則此類查詢將搜索每個文檔中的每個字段。這將需要一個相當複雜的查詢來近似Database.search,它可能表現不佳。如果您在文檔的某個特定字段上搜索某個值,則更爲直接,正如Ken在其回覆中所述。如果您正在搜索的字段是富文本,則您還需要使用@Abstract,因爲@Contains僅適用於純文本。