我正在构建这个搜索页面遇到很多麻烦。
我的文档视图包含以下字段:foreignCompany,ourCompany,dateStarted,dateEnded,countryOfApplication。用户输入以下参数进行搜索:公司名称(foreignCompany),日期(我们称之为searchDate)和countryOfApplication。
结果显示公司在dateStarted - searchDate - dateEnded之间拥有有效合同。 到目前为止,我已部分实现了这一目标。
问题是,如果公司名称是例如:Kompanija,但用户输入:Komp或Kom或Kompanij或其他什么,但不是Kompanija,搜索没有返回结果!?只有输入整个单词时才会返回结果。
我甚至按照IBM的帮助示例,如何构建一个Xpage进行搜索,同样的事情也发生在那里。
我非常感谢这里给予的任何帮助,因为我已经在墙上撞了很长一段时间了。 谢谢!
答案 0 :(得分:5)
如果您在视图数据源上使用搜索属性,请注意搜索属性使用Notes全文搜索“语言”进行搜索查询 - 例如[发布] =“1”和[状态] =“已完成”。
这将使用您的示例搜索公司名称的一部分:
[foreignCompany] CONTAINS Komp
因此您可能需要修改搜索查询。
答案 1 :(得分:0)
如果您使用的是
之类的查询很明显,结果只返回一个外国公司,其完整名称是kompan。你应该使用这样的东西(使用包含..)Query =(FIELD foreignCompany =“kompan”)AND(FIELD countryOfApplication =“Македонија”)AND(FIELD countryOfApplication2 =“Србија”)
Query =(FIELD [foreignCompany]包含“kompan”)AND(FIELD [countryOfApplication]包含“Македонија”)AND(FIELD [countryOfApplication2] =“Србија”)
如何完成此@runtime。您可以使用ssjs函数'generateQuery()'传递要搜索的字符串,并生成正确的查询。像
这样的东西function generateQuery(strforeignCompany, strcountryOfApplication , strcountryOfApplication2){
var strQuery = new java.lang.StringBuffer();
if(strForeignCompany != null && !"".equals(strForeignCompany)){
strQuery.append("[ForeignCompany] contains");
strQuery.append(strForeignCompany);
}
if(strcountryOfApplication != null && !"".equals(strcountryOfApplication )){
strQuery.append("[countryOfApplication ] contains");
strQuery.append(strcountryOfApplication );
}
if(strcountryOfApplication2!= null && !"".equals(strcountryOfApplication2)){
strQuery.append("[countryOfApplication2] contains");
strQuery.append(strcountryOfApplication2);
}
return strQuery.toString();
}