内容


有效使用 Lotus Notes 的搜索功能

简介

Lotus Notes中的搜索模块是一个有效帮助用户快速定位符合搜索要求文档的工具。它能够帮助用户查找指定的信息,包括文本、文档、数据库、个人姓名及 Internet Web 站点。用户可以利用该模块在单个数据库中搜索信息,在多个数据库中搜索信息以及在 Internet 上搜索信息。多数情况下用户会在单一数据库中查询特定的邮件或者文档,所以本文研究的对象为单一数据库的搜索。

首先文章会给出进行有效搜索的前提条件,之后将介绍两种输入搜索条件的方法:搜索条件运算符(Search String)与搜索条件标记(Search Token)。在日常操作中,我们发现通过输入条件字符串进行搜索对于一些熟练的用户更显高效,所以本文也会就输入字符串时常常碰见的一些问题提出解决方案。

前提

在Notes能够进行有效搜索前,需要满足两个前提条件。其一是要使用适当的视图,其二是需要建立全文索引。

使用适当的视图

视图是 Notes 数据库中的文档列表。可以通过视图对文档进行选择、排序或分类。多数情况下,不同的视图会选择满足不同条件的文档进行显示。视图中的搜索模块如图1所示:

图1:视图中的搜索区
图1:视图中的搜索区
图1:视图中的搜索区

当利用视图中的搜索模块进行搜索时,Notes只会在视图显示的文档中进行检索。所以在使用搜索模块时,请选用显示全部文档的视图,或者某一个包含用户需要检索的所有文档的视图。

建立全文索引

在视图中,用户可以利用简单查找功能进行文档搜索。但是该功能只能在视图显示的域中进行查找,并且效率较低。所以为了更加有效的利用Notes的搜索功能,我们推荐将数据库进行全文索引,之后利用视图中的搜索模块区进行搜索。

要查看数据库是否已经具有全文索引,可选择“视图”“搜索此视图”,然后查找绿色指示器,如图2:

图2:全文索引指示
图2:全文索引指示
图2:全文索引指示

当索引(Indexed)灯为绿色时,说明数据库已经建立了索引。同时在右下角会显示最近一次建立索引的日期。为了确保最新更新的文档可被及时加入到数据库的索引中,建议在每次进行搜索之前使用“更新全文索引”(Update Index)功能。

在数据库中搜索满足条件的文档

在搜索模块中,有两种输入条件的方法:输入条件标记和输入运算符。本文将针对两种不同的方式进行说明。

输入条件标记进行搜索

条件是搜索查询中的一种限定,用于限制搜索结果。条件会告知 Notes 某些域中必须存在某些值,或者,必须存在多个特定的词,文档才能与查询相匹配。输入条件时,条件在“搜索”栏中的文本输入框内显示为一个“标记”,如图3:

图3:条件标记
图3:条件标记
图3:条件标记

Notes目前提供了多种条件标记的输入。

  • 日期

    单击搜索区下面的日期(Date)按钮,用户可以通过如图4的界面进行条件输入:

    图4:日期条件输入窗口
    图4:日期条件输入窗口
    图4:日期条件输入窗口

    通过这个窗口,用户可以选择输入如下信息:

    1. 选择是按文档的“创建日期”或“修改日期”进行搜索。
    2. 选择计算日期的方式(例如,“在”,“之后”)。
    3. 在文本输入框中输入日期或天数(例如,4/27/06)。

    图4的输入表明用户希望搜索所有在2006年4月27日创建的文档。

  • 作者

    单击搜索区下面的作者(Author)按钮,用户可通过如图5的界面进行条件输入:

    图5:作者条件输入窗口
    图5:作者条件输入窗口
    图5:作者条件输入窗口

    通过这个窗口,用户可以选择输入如下信息:

    1. 单击此处可以查看使用作者条件进行搜索的样例。选择“是以下任一作者”或“不是以下任一作者”。
    2. 执行下列操作之一:

    单击“名称”域旁的图标,以显示“姓名”对话框,然后添加一个或多个姓名(必须用逗号将姓名分开);

    输入 Notes 用户名(必须用逗号将多个名称分开)。可以使用作者的全名、名或姓,而 Notes 查找该姓名的所有作者所修改的文档。

    图5的例子表明搜索作者中包含有Wei Xi Hu的文档。

  • 单击搜索区下面的域(Field)按钮,用户可以选择需要进行搜索的域并输入相应搜索关键字

    图6:域条件输入窗口
    图6:域条件输入窗口
    图6:域条件输入窗口

    通过这个窗口,用户可以选择输入如下信息:

    1. 选择域名称;
    2. 选择是否应包含该域;
    3. 在“值”域中输入文本、数字或日期;

    注意:如果希望搜索附件中的文本、数字或日期,选择“BODY”域将无效。附件是在名为 $FILE 的域中。如果希望只搜索附件,只需在搜索框中输入查询:

    [$FILE] CONTAINS your text/numbers/date

    图6的例子表明用户希望搜索Subject域包含有单词Test的文档。

  • 表单搜索

    单击搜索区下面的表单(Form)按钮,用户可以选择所有以指定的表单创建的文档,如图7:

    图7:表单条件输入窗口
    图7:表单条件输入窗口
    图7:表单条件输入窗口
  • 样例表单搜索

    单击搜索区下面的样例表单(Fill out example form)按钮,Notes帮助用户将搜索范围限制为在 Notes 显示的样例表单中指定的域内包含指定值的文档。如图8所示:

    图8:样例表单输入窗口
    图8:样例表单输入窗口
    图8:样例表单输入窗口

    图8表明用户希望搜索以答复表格进行创建且主题为Test的文档。

  • 多关键字

    单击搜索区下面的样例表单(Fill out example form)

    图9:多关键字搜索
    图9:多关键字搜索
    图9:多关键字搜索

    图9表明用户希望搜索到内容中包括test和hello的文档。

输入运算符进行搜索

如何输入查询条件

搜索运算符是一些词和字符,用来指示 Notes 搜索特定组合的词、域、日期和数字。在 Notes 中,搜索运算符的工作方式与在大多数 Web 搜索引擎中的方式相同即,基于布尔逻辑同时具有某些强大的功能增强。例如,可创建一个搜索,用于搜索出现在同一文档中的两个词,并指定这两个词的靠近程度、它们必须位于哪个域以及它们的精确大小写形式。

运算符输入对于熟练的Notes用户来说,方便快速。表1列出了常用的条件运算符。

表1:常使用的运算符

运算符描述和样例
=, <, >, <=, >=,运算符,可用来输入日期条件,如 [_CreatedDate]=2006-04-01]
Contains, contains此运算符之前的域必须包含其后面的文本。如
field subject contains test
表明需要搜索Subject域包含单词test的文档
  • field fieldname
  • FIELD fieldname
  • [fieldname] (使用方括号)
域,如
field Subject
FIELD Subject
[Subject]
都表示是Subject域
( )括号,改变运算的优先级。
  • &
  • And
查找包含所有由 AND 连接的条件或单词的文档。
  • |
  • OR
查找包含所有由 OR 连接的条件或单词的文档。
  • NOT
  • not
  • !
表示逻辑否运算符,如
!field Subject contains Test
表明在Subject域中不能包含单词Test 注意: 不能在数学符号 =、<、>、<= 或 >= 后输入 NOT;也不能在日期或数字前输入 NOT。例如,'[date1] = NOT 12/25/2002' 不是正确的查询
" " 为运算符(如 AND、OR、CONTAINS 等)加上引号可使 Notes 将其视为普通词

运算符搜索的常见问题和解决方法

在使用运算符进行搜索的时候,用户常常遇见一些问题。下文针对这些问题提出了解决方法。

  • 查询一个域中多个关键字

    当用户期望在一个域中以“或”的逻辑关系搜索多个关键字的时候,常常会发现搜索的结果并不正确。我们以Notes的收件箱为例。用户希望找到在收件箱中所有由Yun Fang Ge 或者 Wei Xi Hu发出的信件,输入如下运算符:

    field from contains Yun Fang Ge, Wei Xi Hu

    得到如图10的结果:

    图10:在一个域中搜索“或”关系的多个关键字的不正确结果
    图10:在一个域中搜索“或”关系的多个关键字的不正确结果
    图10:在一个域中搜索“或”关系的多个关键字的不正确结果

    从图10中可以看出,搜索出的不少结果并不满足搜索条件。这样的情况通常在视图中有很多文档的时候出现。导致这样结果的原因是Notes会将逗号之后的关键字作为全文搜索的关键字。

    针对这种错误,我们提出的解决方法是在多个关键字外面使用括号。更改后的运算符输入为:

    field from contains (Wei Xi Hu, Yun Fang Ge)

    得到如图11的结果:

    图11:在一个域中搜索“或”关系的多个关键字的正确结果
    图11:在一个域中搜索“或”关系的多个关键字的正确结果
    图11:在一个域中搜索“或”关系的多个关键字的正确结果
  • 查询在多个域中多个关键字

    当用户希望在多个域中寻找多个关键字的时候,也会遇到不正确的搜索结果,甚至当用户采用了我们在上例中的建议,在多个关键字外面使用了括号,依然会出现错误结果。我们依然拿Notes的收件箱为例。为了找到所有由Yun Fang Ge或 Yin Hu发出,且主题有Re的信,我们输入如下运算符:

    field subject contain Re AND field from contain (Yun Fang Ge, Yin Hu)

    可是我们得到的结果却如图12:

    图12:在多个域中搜索多个关键字的不正确结果
    图12:在多个域中搜索多个关键字的不正确结果
    图12:在多个域中搜索多个关键字的不正确结果

    图12中用红色方框标记出的结果并不满足搜索条件。我们分析其原因为Notes 把除了第一个关键字外剩下的多个关键字当作或的关系来处理。也就是说Notes理解成为:

    Field Subject contains Re AND field from contains Yun Fang Ge 
    _OR field from contains Yin Hu

    针对这种错误,我们提出的解决方法是在每个域外都使用括号。所以更改后的输入运算符为:

    (field subject contain Re) AND (field from contains (Yin Hu, Yun Fang Ge))

    更改后得到如图13的结果:

    图13:在多个域中搜索多个关键字的正确结果
    图13:在多个域中搜索多个关键字的正确结果
    图13:在多个域中搜索多个关键字的正确结果

结束语

Notes为了方便用户,提供了强大的搜索功能。本文集中介绍了如何利用Notes的搜索功能在单数据库中进行有效的文档查询,不但给出了Notes自带的条件标记搜索说明,同时也列出了常用的运算符条件输入方法。对于使用运算符输入进行的搜索,如果没有进行有效输入,将会需要用户使用大量的时间排除搜索结果中不符合要求的文档。本文以实际案例来说明如何能够进行有效的搜索输入,从而使得用户更好地利用Notes的搜索功能。当然除了单数据库的搜索功能,Notes还提供了在多数据库和Internet上的搜索功能,我们将会在未来的工作中加以总结并与大家分享。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=124698
ArticleTitle=有效使用 Lotus Notes 的搜索功能
publish-date=05262006