在日期字段上使用FTSearch

时间:2013-12-14 00:52:43

标签: javascript full-text-search xpages

在某些SSJS中,我做一个FTSearch来检索我随后操作并输入到重复控件的值。查询非常复杂,除了这篇文章之外,我还能完成所有工作。

var qString = tmpArray [cTerms ++] =“((FIELD [WFSCompletedDate]>”+ dString +“)AND(FIELD WFSOrig CONTAINS \”“+ user +”\“))”;

当代码运行时,它解析为以下内容:

((FIELD [WFSCompletedDate]> 11/13/2013)AND(FIELD WFSOrig包含“Bill Fox / Workflo Systems”))

接下来我做:

var dc:NotesDocumentCollection = database.FTSearch(qString);
viewScope.put("vsCollCount",dc.getCount());

但是,它永远不会进入viewScope.put

在我的整体查询中,如果我使用所有内容但注释掉上面的行,则搜索工作正常。问题是代码停止在FTSearch上运行,因此dc.getCount永远不会执行。我已经尝试了[]而没有它们,但结果总是一样的。如果WFSCompletedDate字段存在于文档中,它包含合法日期,则该字段永远不会为空。非常混乱,因为在较大的查询中,一部分是: query] =“(!((FIELD WFSStatus = Draft)OR(FIELD WFSStatus =正在处理中)或(FIELD WFSStatus =已批准)或(FIELD WFSStatus = Denied))AND(FIELD WFSOrig CONTAINS \”“+ user +”\“ )和[_RevisionDate]>“+ dString +”)“

并使用[_RevisionDate],这不会导致问题。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

基于所有评论和重新评论,这是我的假设:

Notes客户端的高级FTSearch对话框根据其设计时间定义分析项目的数据类型,而不是基于存储在其中的某些值:我们都知道我们可以使用后端类将大部分内容放入项目中,无论数据类型是什么这个领域是在设计时给出的。如果数据与表单元素组合,通常不会发生错误。

所以,对我来说,看起来好像在设计时字段的数据类型已设置为Text,而在运行时它以某种方式显示日期时间值,很可能是通过(LotusScript?)后端代码。

尝试将您的数据库和设计元素放入一个表单,您可以在其中执行基于客户端的FT搜索以满足您的需求。如果这样做,它很可能也将作为代码驱动的FT搜索。

顺便说一下:如果你使用“FIELD [WFSCompletedDate]”构建一个查询,你实际上正在寻找一个包含括号的字段,并且由于表单上没有这样的字段,你不会遇到任何错误,但当然你也不会受到任何打击。

编辑:刚刚在这里找到了这个:Query is not understandable - using field Fulltext search [Tags] = "foo":请务必阅读Thomas Adrian自己关于数据库中多个同名字段的答案!