1

我在 $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());
4

1 回答 1

2

如果您能够在一小时/两小时后检索结果,则 FT-Index 在尝试处理您的请求时不是最新的。使用updateFTIndex()NotesDatabase- 类的方法来确保它是最新的。当然,您可以检查它是否是最新的,使用 getLastFTIndexed()- 方法...这是来自 Designer-Help 的示例代码,用于使用这两种方法:

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

附加信息:为您定义的数据库创建全文索引时,该索引的更新频率。

但是:即使在对话框中选择“立即”,这并不意味着索引将始终是最新的。更新全文是服务器更新任务的工作。如果此任务“忙”,则该请求将排队,并且可能会延迟一段时间,直到有资源可用于完成该工作。

服务器管理员可以通过设置 notes.ini- 变量“UPDATE_FULLTEXT_THREAD”来增强全文索引更新的性能(有关该变量的详细信息,请参见此链接)。

于 2014-03-10T10:47:19.977 回答