多值日期字段搜索不起作用
mutivalue date field search not working
我有一个名为 freeDaysPool 的多值字段,它有多个日期字符串。使用以下代码,搜索不会 return 任何东西。如果我将该字段排除在外,则搜索可以与其他两个字段一起正常工作。我读到我应该将 CONTAINS 与多值字段一起使用,但后来我得到了无法理解的查询。
我已经尝试将后端字段作为日期字段和文本字段,并测试了各种查询组合和日期格式,但没有成功。非常感谢任何帮助。
这是搜索按钮代码:
var query = new Array("");
var cTerms = 0;
// Field 1
var search01 = getComponent("searchcustomReservationField01").getValue();
if (@Contains(@Text(search01),"any city")){"";}
else {query[cTerms++] = '[customReservationField01]="' + search01 +'"'};
// Field 2
var search02 = getComponent("searchcustomReservationField02").getValue();
if (@Contains(@Text(search02),"any city")){"";}
else {query[cTerms++] = '[customReservationField02]="' + search02 + '"'};
// Date 1
var formatter = new java.text.SimpleDateFormat("d.M.yyyy");
query[cTerms++] = 'FIELD freeDaysPool = ' + formatter.format(getComponent("searchcustomDateField01").getValue());
// if query is still empty, we fill it with asterisk
if(query == "" || query == null){
query[cTerms++] = "*";
}
// make all as string
qstring = query.join(" AND ").trim();
sessionScope.searchString = qstring;
它将return查询为:
[customReservationField01]="Oslo" AND [customReservationField02]="Oslo" AND FIELD freeDaysPool = 6.2.2015
公式中的 AFAIK 日期值(查询是公式)必须像
[06.02.2015]
比较它们。只需尝试在 Notes Client 中使用您的公式来进行全文搜索。如果你得到结果并且没有错误,你就找到了正确的格式。这至少是我测试查询的方式,因为我多年来无法提醒语法:-D
感谢大家的帮助!似乎 Domino 将字段类型保留为日期字段,即使您将其更改回文本字段(从注释 FTsearch 中注意到)。我创建了全新的文本字段,并将日期添加为 dd.MM.yyyy 格式的字符串。我还将它们作为字符串进行搜索,并且效果很好。
更改后的代码位现在如下所示:
// Date 1
var formatter = new java.text.SimpleDateFormat("dd.MM.yyyy");
query[cTerms++] = '[freeDays] CONTAINS "' + formatter.format(getComponent("searchcustomDateField01").getValue())+'"';
我有一个名为 freeDaysPool 的多值字段,它有多个日期字符串。使用以下代码,搜索不会 return 任何东西。如果我将该字段排除在外,则搜索可以与其他两个字段一起正常工作。我读到我应该将 CONTAINS 与多值字段一起使用,但后来我得到了无法理解的查询。
我已经尝试将后端字段作为日期字段和文本字段,并测试了各种查询组合和日期格式,但没有成功。非常感谢任何帮助。
这是搜索按钮代码:
var query = new Array("");
var cTerms = 0;
// Field 1
var search01 = getComponent("searchcustomReservationField01").getValue();
if (@Contains(@Text(search01),"any city")){"";}
else {query[cTerms++] = '[customReservationField01]="' + search01 +'"'};
// Field 2
var search02 = getComponent("searchcustomReservationField02").getValue();
if (@Contains(@Text(search02),"any city")){"";}
else {query[cTerms++] = '[customReservationField02]="' + search02 + '"'};
// Date 1
var formatter = new java.text.SimpleDateFormat("d.M.yyyy");
query[cTerms++] = 'FIELD freeDaysPool = ' + formatter.format(getComponent("searchcustomDateField01").getValue());
// if query is still empty, we fill it with asterisk
if(query == "" || query == null){
query[cTerms++] = "*";
}
// make all as string
qstring = query.join(" AND ").trim();
sessionScope.searchString = qstring;
它将return查询为:
[customReservationField01]="Oslo" AND [customReservationField02]="Oslo" AND FIELD freeDaysPool = 6.2.2015
公式中的 AFAIK 日期值(查询是公式)必须像
[06.02.2015]
比较它们。只需尝试在 Notes Client 中使用您的公式来进行全文搜索。如果你得到结果并且没有错误,你就找到了正确的格式。这至少是我测试查询的方式,因为我多年来无法提醒语法:-D
感谢大家的帮助!似乎 Domino 将字段类型保留为日期字段,即使您将其更改回文本字段(从注释 FTsearch 中注意到)。我创建了全新的文本字段,并将日期添加为 dd.MM.yyyy 格式的字符串。我还将它们作为字符串进行搜索,并且效果很好。 更改后的代码位现在如下所示:
// Date 1
var formatter = new java.text.SimpleDateFormat("dd.MM.yyyy");
query[cTerms++] = '[freeDays] CONTAINS "' + formatter.format(getComponent("searchcustomDateField01").getValue())+'"';