XPages在SSJS中创建一个全文索引



我有一个数据库,它必须是全文索引的,所以我添加了下面的代码来创建一个数据库(如果它没有完全准备好索引):

if (database.isFTIndexed()){
    database.updateFTIndex(false)
} else {
    var options:int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES + database.FTINDEX_IMMEDIATE
    database.createFTIndex(options , true);
    database.updateFTIndex(false);
}
sessionScope.put("ssSelectedView","vwWFSProfile")

当它运行时,我会得到以下错误:错误源页面名称:/xpWFSAdmin.xsp控件Id:button2属性:onclick

例外执行JavaScript操作表达式时出错com.ibm.jscript.types.GeneratedWrapperObject$StaticField与com.ibm.jscript.types.FBS值不兼容

表达式

1:#{javascript:if(database.isFTIndexed()){2:数据库.updateFTIndex(false)3:}其他{4:var选项:int=数据库。FTINDEX_ALL_BREAKS+数据库。FTINDEX_ATTACHED_FILES+数据库。FTINDEX_IMMEDIATE5:database.createFTIndex(选项,true);6:database.updateFTIndex(false);7:}8:sessionScope.put("ssSelectedView","vwWFSProfile")}

它在第4行阻塞了——它不喜欢参数的求和。所以我把第4行注释掉,把第5行改为读取database.createFTIndex(4,true)然后我得到这个错误:

执行JavaScript操作表达式时出错脚本解释器错误,行=5,列=18:[TypeError]调用方法NotesDatabase.createFTIndex(数字,布尔值)null 时发生异常

JavaScript代码

1:if(database.isFTFIndexed()){2:数据库.updateFTIndex(false)3:}其他{4://var选项:int=数据库。FTINDEX_ALL_BREAKS+数据库。FTINDEX_ATTACHED_FILES+数据库。FTINDEX_IMMEDIATE5:database.createFTIndex(4,true);6:database.updateFTIndex(false);7:}8:sessionScope.put("ssSelectedView","vwWFSProfile")

似乎无法让它发挥作用。我可以进入数据库并手动创建索引,这样就不会出现权限问题。

据我所知,您不能使用数据库。FTINDEX_IMMEDIATE作为createFTIndex()的参数,仅用于setFTIndexFrequency()。

所以删除数据库的使用。FTINDEX_IMMEDIATE并执行此操作:

var options:int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES;
database.createFTIndex(options , true);

然后,您可以调用setFTIndexFrequency(),如下所示:

database.setFTIndexFrequency(database.FTINDEX_IMMEDIATE);

最新更新