我正在尝试创建动态搜索。所以,在搜索表单上,我添加了所有字段,我想在搜索和动作搜索脚本中使用生成查询,然后在FTSearch函数中使用。一切都适用于文本字段,但使用日期字段 - 出了点问题。搜索结果不符合我的期望。
这是我的字段在视图中的表示方式:
created Deadline
08.10.2014 10.10.2014
08.10.2014 14.10.2014
06.10.2014 10.10.2014
这些是我的搜索查询的示例:
但正如我所说 - 返回的结果与搜索查询没什么相似之处。有什么不对?
实施例: - 所有文件
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
结果 - 所有更改
结果 - 0个文件
“[截止日期]> = 09.10.2014”
这是我称之为并在视图中显示的方式:
Set col = db.FTSearch(query, 0 )
Call col.putallinfolder("Search",True)
Call ws.ViewRefresh
可能是,事实造成的问题,创建的字段和Deadline存储日期没有时间?
答案 0 :(得分:0)
假设日期存储为日期字段: 尝试替换句号“。”在您的日期格式中使用斜杠“/”。 FT搜索适用于日期值而不是文本表示。
例如
[created] >= 26/4/2014
请注意日期和月份数字(我是英文) - 您对服务器的地理位置的描述是格式是dd-mm-yyyy(欧洲)还是mm-dd-yyyy(美国格式)。
如果日期存储在文本字段中: 尝试围绕日期值引用,例如
[created] = "04.10.2014"
但是> =(或>,< etc)之类的比较不适用于文本字段FT搜索。它仅适用于日期和数字字段。
答案 1 :(得分:0)
可能是您第一次创建日期字段时,将其设置为文本。然后你将typ改为日期/时间。 这将在UNK表中将字段设置为文本,这将阻止您进行这些搜索。可以重建UNK表,但这可能很棘手。 您可以在此处阅读有关UNK表的更多信息:http://www-01.ibm.com/support/docview.wss?uid=swg21100238
答案 2 :(得分:0)
从我的观点来看,唯一的问题是您正在尝试使用内部Lotus Notes字段/ propery。
刚刚检查过搜索:
[_ CreationDate]< 07.10.2014和[_CreationDate]< 07/10/2014
两者都工作并返回相同的有效结果。我想这就是你要找的东西。
如果您的表单上没有名为“created”的真实字段(并且当然保存在文档中的值中)那么该公式将不会返回您期望的内容。
[_ CreationDate]几乎与公式@created一样。
P.S。在深度Lotus Notes迷宫中@created在某些情况下与doc.created不同,但那是不同的故事。
答案 3 :(得分:0)
好的,最后我找到了解决这个问题的方法。因此,FTSearch按设计工作,查询返回正确的文档集合。但问题在于 putallinfolder 功能,或者更好的说 - 与响应文档。每次莲花清除搜索视图,在结果集合中有子文件。所以,我添加了自定义函数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
现在一切正常。有点慢,但文件的数量并没有增加,所以这个解决方案对我有好处。