2014-10-08 105 views
0
  • 我有一个窗体,其中包含几个文本字段和两个日期字段,分别称为 - created和Deadline。
  • 我会对数据库

我试图创建动态搜索全文搜索索引。所以,在搜索表单中,我添加了所有的字段,我想在搜索中使用以及在Action搜索脚本中生成查询,然后在FTSearch函数中使用该查询。一切工作都非常适合文本字段,但是日期字段 - 出现问题。搜索结果不符合我的预期。LotusScript FTSearch日期字段

这是我的字段在视图中表示:

created  Deadline  
08.10.2014 10.10.2014  
08.10.2014 14.10.2014  
06.10.2014 10.10.2014 

那些是我的搜索查询的示例:

  • “[创建]> = 2014年4月10日”
  • “[创建]> = 04.10.2014 & [创建] < = 07.10.2014“
  • ”[created]> = 06.10.2014 & [Deadline]> = 08.10.2014“
  • “[创建]> = 2014年10月3日& [创建] < = 2014年5月10日& [截止]> = 2014年8月10日& [截止] < =二〇一四年十月一十一日”

但正如我所说 - 返回的结果与搜索查询没有任何相似之处。什么可能是错误的?

实施例: - 所有文档

Created  Deadline    
09.10.2014 10.10.2014 

03.10.2014 09.10.2014 

08.10.2014 10.10.2014 

08.10.2014 14.10.2014 

07.10.2014 09.10.2014 

06.10.2014 10.10.2014 

06.10.2014 10.10.2014 

03.10.2014 06.10.2014 
  • 查询 “[创建]> = 2014年10月7日”

结果 - 所有改变

  • 查询“[创建]> = 07.10.2014 & [创建] < = 09.10.2014“

结果 - 0文档

  • “[截止]> = 2014年9月10日”

    • 结果 - 的所有文档

这是如何我调用它并显示在视图中:

Set col = db.FTSearch(query, 0)   
    Call col.putallinfolder("Search",True) 
    Call ws.ViewRefresh 

它可以,造成事实上的问题,那场创建和截止日期存储日期没有时间?

回答

0

假设日期存储为日期字段: 尝试更换期间“。”。在日期格式中使用斜杠“/”。英国金融时报搜索的日期值而不是文字表示。

[created] >= 26/4/2014 

注日期和月份的数字(我英文) - 你在服务器的地理环境的mecry以格式是DD-MM-YYYY(欧洲)或mm-dd-yyyy(美国格式)。

如果日期存储在文本字段: 试着在日期值,例如报价

[created] = "04.10.2014" 

但是比较喜欢> =(或>,<等)将不与文本字段FT搜索工作。它只适用于日期和数字字段。

+0

我试图改变格式 - 它没有帮助。 此外 - 日期存储在日期/时间字段中,文档表单和搜索表单中字段的表示格式相同。 – 2014-10-08 13:42:19

+0

你可以发布一个不起作用的例子吗?即你的查询是什么,结果中的字段是什么?这是在Notes客户端搜索栏中运行,还是通过一些lotusscript或通过Web浏览器搜索URL运行? – user2808054 2014-10-08 15:28:44

+0

我在第一篇文章中添加了示例 – 2014-10-09 08:30:03

0

可能是因为当您第一次创建日期字段时,您将其设置为文本。然后,您稍后将类型更改为日期/时间。 这会将字段设置为UNK表中的文本,这会阻止您执行这些类型的搜索。可以重建UNK表,但这可能会很棘手。 您可以在这里阅读有关UNK表的更多信息:http://www-01.ibm.com/support/docview.wss?uid=swg21100238

+0

。我深入探讨了这个话题。我尝试了与UNK相关的所有内容:删除索引,重新创建,使用创建副本和副本在本地删除,然后再次复制到服务器并重新创建索引。字段从一开始就是这样使用的:创建的计算日期/时间字段的值为@Created和Deadline - 带日历样式的可编辑日期/时间字段,其中用户选择适当的日期。所以,这就是为什么我对此感到困惑。 – 2014-10-09 15:05:24

0

从我的角度来看,问题在于您试图使用内部Lotus Notes字段/ propery。

刚才检查与搜索:

[_CreationDate] < 2014年7月10日和[_CreationDate] < 2014年7月10日

工作和返回同样有效的结果。我想这就是你要找的。

如果您的表单上没有名为“created”的实际字段(并且保存在文档中的值中)那么该公式不会返回您所期望的值。

[_CreationDate]的作用几乎与公式@created一样。

p.s.在深Lotus Notes迷宫@创建在某些情况下是不一样的doc.created,但多数民众赞成在不同的故事。

+0

我有使用公式@created创建的字段。但问题不仅在于创建的领域,而且还在于截止日期。 – 2014-10-28 16:08:23

+0

你确定ftsearch没有你的代码吗?我的意思是它从视图上起作用?以下是截图示例:http://i.imgur.com/f0sX2of.png – user1312673 2014-10-29 10:15:13

0

好吧,最后我找到了解决这个问题的方法。因此,FTSearch按设计工作,查询返回适当的文档集合。但问题是putallinfolder函数,或者更好地说 - 与响应文件。 Lotus每次清除搜索视图,在产生的集合中存在带有子项的文档。所以,我添加了自定义功能ptInFolder(我想,我们还可以用的NotesDocument类的本地putInFolder法):

Function putInFolder(doc As NotesDocument) 
    On Error Goto catch 
    Call doc.PutInFolder("Search") 
catch: 
    Exit Function 
End Function 

而搜索按钮点击,我是通过遍历集合:

Set col = db.FTSearch(query, 0)  

    For i = 1 To col.Count 

     Set doc = col.GetNthDocument(i) 

     Call putInFolder(doc)   

    Next 

现在一切正常。有点慢,但文件的数量并没有增加,所以这个解决方案对我有好处。