有人可以通过调用NotesDatabase.FTSearch(string)方法来帮助我解决异常问题

时间:2019-05-05 22:50:45

标签: lotus-notes lotusscript

我正在尝试对数据库进行全文搜索,并且努力使其正常工作。 由于我正在使用日期字段,因此我删除了全文索引,将所有空白日期字段设置为虚拟日期(3/15/2050),压缩了数据库,然后重建了全文索引。

但是,我仍然收到此查询字符串的错误: (字段包含'Opp')和(字段包含'A')和(字段DateTeam> = 3/1/2019)和(字段DateTeam <= 3/31/2019)

最初我没有单引号,但尝试将其作为另一篇文章的建议。我还尝试在约会前后加上#号,但也没有运气。

我想念什么?我的顾客越来越沮丧。

4 个答案:

答案 0 :(得分:1)

您没有在例外中发布语言说明,也没有说出您使用的是什么Domino版本,因此这有点猜测。

可能是 UNK表(Domino的内部字段目录)认为该字段是字符串字段。存储在字段中的第一个值是FT索引用于确定索引数据类型的类型。当然,任何类型都可以存储在NSF数据中,但是FT代码试图将这种类型的搜索限制为它认为可以使用的字段。

现在,如果那些CONTAINS值实际上是=值,那么DQL可以为您提供帮助。我们将在V11中将CONTAINS作为动词放入DQL中,但是它(DQL)当然可以执行您的日期范围项。只是一个想法。

-约翰·柯蒂斯

答案 1 :(得分:0)

这可能会有所帮助:https://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax 据我所知,日期值必须在[]中才能正常工作。 一个好的开始是使用FT搜索功能在客户端中测试您的公式,而不用更改代码。

顺便说一句:您可以缩短公式,省略FIELD关键字,并将字段名称也放在[]中。

答案 2 :(得分:0)

我在邮件数据库中尝试了此操作

place

它正常工作。因此,双引号而不是单引号,并且您可能必须检查日期格式是否与服务器的日期格式相对应。

答案 3 :(得分:0)

我采用的方法是正确的。但是问题是,我设置所有日期字段的更新代理中有一个错字,因此它没有为日期设置正确的字段名。我的疏忽一旦找到并纠正它,我便回溯了我的步骤,所有步骤现在都按预期工作。谢谢大家帮助我找到解决方案。

对于其他任何人,我都采取了以下步骤: 打开数据库属性并删除全文本索引 在控制台上运行此命令以压缩db:lo compact folder / db.nsf -c 对所有文档运行代理以将日期字段设置为虚拟日期 再次打开数据库属性并创建一个新的全文本索引 完成后,在控制台上运行此命令:load updall -f folder / db.nsf 再次运行代理以将虚拟日期重置为空白