矢量搜索在XPages中无法正常工作
我使用vectors在XPages中执行多列搜索功能。它工作正常,但效率不高。在筛选器列值属性中,我使用以下代码:矢量搜索在XPages中无法正常工作,xpages,lotus-notes,xpages-ssjs,Xpages,Lotus Notes,Xpages Ssjs,我使用vectors在XPages中执行多列搜索功能。它工作正常,但效率不高。在筛选器列值属性中,我使用以下代码: try { var vtr:java.util.Vector = new java.util.Vector(); var t1 = sessionScope.searchfirstName; var t2 = sessionScope.searchlastname; var t3 = sessionScope.searchemail; var
try {
var vtr:java.util.Vector = new java.util.Vector();
var t1 = sessionScope.searchfirstName;
var t2 = sessionScope.searchlastname;
var t3 = sessionScope.searchemail;
var t4 = sessionScope.searchcountry;
var t5 = sessionScope.searchcompany;
@If(t1 !=null,vtr.addElement(t1),vtr.addElement(""));
@If(t2 !=null,vtr.addElement(t2),vtr.addElement(""));
@If(t3 !=null,vtr.addElement(t3),vtr.addElement(""));
@If(t4 !=null,vtr.addElement(t4),vtr.addElement(""));
@If(t5 !=null,vtr.addElement(t5),vtr.addElement(""));
return vtr;
} catch(e) {
}
当我执行搜索操作时,它将适用于某些值,而不是所有值。例如,如果我搜索“Raj”作为名字,它将显示结果,但如果我搜索“Yadav”作为姓氏,它将显示0结果。我假设您使用向量搜索视图。在Notes中,视图搜索需要“升序填充”键(除此之外,所有列都需要排序)。因此,当向量中的第二个元素不为null时,第一个元素也不能为null。Notes将搜索第一个键,然后使用第二个键搜索结果,依此类推,直到该键为空。因此,当您仅使用第二个键进行搜索时,结果将为空。 这是Notes的核心功能,并非特定于XPages。您可以对视图使用带有字段名的ft搜索 更新:
那你能做什么呢?以下代码在我脑海中消失了,因此您可能需要修复打字错误:
try {
var vtr:java.util.Vector = new java.util.Vector();
var t1 = sessionScope.searchfirstName;
var t2 = sessionScope.searchlastname;
var t3 = sessionScope.searchemail;
var t4 = sessionScope.searchcountry;
var t5 = sessionScope.searchcompany;
var resultArray = [];
if (t1) { resultArray.push("[FirstName] = " + t1); };
if (t2) { resultArray.push("[LastName] = " + t2); };
if (t3) { resultArray.push("[eMail] = " + t3); };
if (t4) { resultArray.push("[Country] = " + t4); };
if (t5) { resultArray.push("[Company] = " + t5); };
return @Implode(resultArray, " AND ");
} catch(e) {
print(e.message);
}
然后执行NotesView.FTSearch(..)
此方法的优点:您的视图可以以任何方式排序,您可以搜索甚至未显示在视图中的字段。缺点:您需要一个FTIndex,这需要更多的工作,因为您不能将视图控件用于生成的DocumentCollection-您需要一个RepeatControl是。所有列都是升序列。当我使用第二个、第三个或第四个键进行搜索时,有时会给出结果,但结果不正确。在这里,列的向上或向下排序并不重要。它们很重要。搜索要求向量的所有元素都是非空的。带有null的场景“Yadav”是不受支持的搜索-结果可以是任何内容。简而言之:Null不是有效的搜索键。谢谢你@stwissel。你是天才。我使用您的技术将键放入数组中,然后使用搜索属性在视图面板中获得所需的结果。再次感谢。vtr.addElement(t1?t1:“”)较短。但您需要保留ifs,以便根据视图列格式化键值——正如stwissel所解释的那样。