[英]Delay in retriving parent document using FT Search
我在$ message id字段上使用FT搜索来检索父文档。我的数据库已被FT索引。 我需要上级文件才能接受会议邀请。 在获得会议邀请2小时后,我如何能够检索文档。 需要帮忙。
String messageiD="<OFF0E85FF0.91FEF356-ON65257C97.00360343-65257C97.00361318@LocalDomain>";
if (messageiD.contains("@")) {
String[] strArr = messageiD.split("@");
messageiD = strArr[0].replace("<", "");
System.out.println("message id is "+messageiD);
//return messageiD;
}
String qry = "Field $MessageID CONTAINS " + messageiD;
DocumentCollection col1 = m_database.FTSearch(qry);
System.out.println("doc col length is " +col1.getCount());
Document docOld = col1.getFirstDocument();
System.out.println(docOld.getNoteID());
如果您能够在一小时/两个小时后检索到结果,则FT-Index在尝试处理您的请求时不是最新的。 使用NotesDatabase-类的方法updateFTIndex()
可以确保它是最新的。 当然,您可以使用getLastFTIndexed()-方法来检查它是否是最新的-这是示例-Designer-帮助中的代码,以使用这两种方法:
try {
Session session = getSession();
AgentContext agentContext =
session.getAgentContext();
// (Your code goes here)
Database db = agentContext.getCurrentDatabase();
String title = db.getTitle();
DateTime lastDT = db.getLastFTIndexed();
DateTime nowDT = session.createDateTime("Today");
nowDT.setNow();
int daysSince =
nowDT.timeDifference(lastDT) / 86400;
if (daysSince > 2) {
System.out.println("Database \"" + title +
"\" was last full-text indexed " +
daysSince + " days ago");
System.out.println("Updating");
db.updateFTIndex(true); }
else
System.out.println("Database \"" + title +
"\" was full-text indexed less
than two days ago");
} catch(Exception e) {
e.printStackTrace();
}
附加信息:在为您定义的数据库创建全文索引时,此索引的更新频率。
但是:即使在对话框中选择“立即”,这也不意味着索引将始终是最新的。 更新全文是服务器Update-任务的工作。 如果此任务要“忙”,则请求将排队,并且可能会延迟一段时间,直到有足够的资源来执行此工作。
服务器管理员可以通过设置notes.ini来增强全文索引更新的性能。变量“ UPDATE_FULLTEXT_THREAD”(请参阅此变量链接以检查详细信息)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.