构建一个用于搜索问题的Xpage

时间:2012-03-02 08:27:20

标签: lotus xpages lotus-domino

我正在构建这个搜索页面遇到很多麻烦。

我的文档视图包含以下字段:foreignCompany,ourCompany,dateStarted,dateEnded,countryOfApplication。用户输入以下参数进行搜索:公司名称(foreignCompany),日期(我们称之为searchDate)和countryOfApplication。

结果显示公司在dateStarted - searchDate - dateEnded之间拥有有效合同。 到目前为止,我已部分实现了这一目标。

问题是,如果公司名称是例如:Kompanija,但用户输入:Komp或Kom或Kompanij或其他什么,但不是Kompanija,搜索没有返回结果!?只有输入整个单词时才会返回结果。

我甚至按照IBM的帮助示例,如何构建一个Xpage进行搜索,同样的事情也发生在那里。

我非常感谢这里给予的任何帮助,因为我已经在墙上撞了很长一段时间了。 谢谢!

2 个答案:

答案 0 :(得分:5)

如果您在视图数据源上使用搜索属性,请注意搜索属性使用Notes全文搜索“语言”进行搜索查询 - 例如[发布] =“1”和[状态] =“已完成”。

这将使用您的示例搜索公司名称的一部分:

[foreignCompany] CONTAINS Komp

因此您可能需要修改搜索查询。

答案 1 :(得分:0)

如果您使用的是

之类的查询
  

Query =(FIELD foreignCompany =“kompan”)AND(FIELD   countryOfApplication =“Македонија”)AND(FIELD countryOfApplication2   =“Србија”)

很明显,结果只返回一个外国公司,其完整名称是kompan。你应该使用这样的东西(使用包含..)

  

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();
 }