我正在做什么,:
从java代码中,我检索notes数据库,并使用solrj
客户端使用全文索引来索引该数据库的所有文档,并将特定文档的索引数据保存在全文服务器上。
假设当同一数据库再次出现索引时,考虑删除该数据库中已经在全文服务器上索引的任何一个文档,
但是这个文档是从notes数据库中删除的,所以我不想在已删除文档的全文服务器上保留(意思是要删除)索引数据。
所以我怎么知道哪份文件被删除了
我想的是,在索引时存储文档的id和db名称,所以我将有索引文档的记录,这样我就可以识别哪些文档被从特定的数据库中删除了。
还有其他有效的方法吗?
谢谢你阅读问题。
发布于 2016-01-28 04:06:34
文档的通用id至少对于完整的数据库是唯一的标识符。
您可以在Java中使用Document.getUniversalID()
获得它。
通过设计,每个唯一的id在世界范围内都是独一无二的,但是作为一个设计师,您可以绕过它(unids是可写的),并且副本当然有相同的唯一id的文档。
将unid与数据库的文件路径相结合,那么它确实是唯一的。
现在,只需记住所有索引的联合,并且在下一次运行检查之后,如果有一些,您将无法再找到(例如,从existing indices
- list中删除每个“找到的”unid - path键,并且最终那里的任何内容都不再存在)。
背景
在NSF-数据库中删除的每个文档在最终被清除之前(至少) 90天会变成一个所谓的Deletion Stub
。该间隔是可配置的每个数据库,可以少于90天,如果管理员决定如此.
这些删除存根仍然包含unid作为信息。对于您的目的来说,它们将是完美的(因为这正是它们对称为replication
的内部流程的目的)。
不幸的是,用Java获取数据库的删除存根并不是一种简单的方法。
有用外部工具或C-API来自LotusScript获取它们的方法,但它们都不是很容易从Java中使用的。
https://stackoverflow.com/questions/35057375
复制相似问题