2012-03-19 113 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仅适用于纯文本。