我的要求是收集Lotus Notes文档,对于给定的一组搜索词,它包含:
我正在使用Database.FTsearch(...)
方法,为特定短语生成查询并将查询传递给该方法。我发现还有另一种方法:Database.search(string arg1)
。如何在上述三种情况下使用该方法?
答案 0 :(得分:4)
NotesDatabase search method将公式字符串作为其第一个参数。您可以传递公式,例如:
@Contains(Body; "Word1") || @Contains(Body; "Word2") || @Contains(Body; "Word3")
如果三个单词中的任何一个在正文中,那么该文档将与文档匹配。要使它与所有单词匹配,只需将OR(||)更改为AND(&&)。
请注意,此方法搜索没有索引的所有文档,如果有数千个文档,则可能会非常慢。 FTSearch method速度更快,但要求您启用全文索引才能高效工作。
答案 1 :(得分:0)
Domino wiki有an excellent discussion of when to use each search method and how to use them。
请记住FTSearch
的索引不会立即更新,即使全文索引设置为更新"立即"。如果您需要最新的结果,则需要先调用Database.updateFTIndex
(这会影响性能)或使用Database.search
。
另请注意,翻译FT查询可能并不完全是直截了当的。如果要构建简单查询,例如" Term1或Term2 OR Term3",则此类查询将搜索每个文档中的每个字段。这需要一个相当复杂的查询来近似Database.search
,它可能表现不佳。如果您正在搜索文档中的特定字段以获取值,那么Ken会在回复中描述,这样更直接。如果您要搜索的字段是富文本,则还需要使用@Abstract
,因为@Contains
仅适用于纯文本。
答案 2 :(得分:-1)