查重是编目和采购等业务环节的一个重要功能。
dp2编目系统提供了一个查重窗口,专用于进行查重。这个窗口作为一个组件,也可以在数据加工的二次开发C#脚本中调用。
下图是查重的场景:
dp2编目系统查重的操作原理,是将查重发起的记录,按照该记录所从属的书目库的检索点配置策略,创建检索点,然后利用这些检索点,针对若干查重目标库进行检索。
这里所指的创建检索点,是模拟保存记录到数据库的那种规则,创建检索点,哪怕是尚未保存的新记录,也可以这样运作。
对目标库进行检索后,软件将按照预先配置的权重指标,对命中进行评估,测算出一个权值的和,如果某项命中记录的权值和超过预先配置的“阈值”,界面上就会把这项加亮显示,权值左边也会着重标出一个星号,表示这项就算和发起记录“重”了。
===
下面是服务器全局cfgs/dup配置文件的片断:
...
<project name="采购查重" comment="示例方案">
<database name="测试书目库" threshold="60">
<accessPoint name="著者" weight="50" searchStyle="" />
<accessPoint name="题名" weight="70" searchStyle="" />
<accessPoint name="索书类号" weight="10" searchStyle="" />
</database>
<database name="编目库" threshold="60">
<accessPoint name="著者" weight="50" searchStyle="" />
<accessPoint name="题名" weight="70" searchStyle="" />
<accessPoint name="索书类号" weight="10" searchStyle="" />
</database>
</project>
<project name="编目查重" comment="这是编目查重示例方案">
<database name="中文图书" threshold="100">
<accessPoint name="责任者" weight="50" searchStyle="" />
<accessPoint name="ISBN" weight="80" searchStyle="" />
<accessPoint name="题名" weight="20" searchStyle="" />
</database>
<database name="图书测试" threshold="100">
<accessPoint name="责任者" weight="50" searchStyle="" />
<accessPoint name="ISBN" weight="80" searchStyle="" />
<accessPoint name="题名" weight="20" searchStyle="" />
</database>
</project>
<default origin="中文图书" project="编目查重" />
<default origin="图书测试" project="编目查重" />
...
这里定义了两种查重方案(<project>元素),其中一种“编目查重”缺省和“中文图书”和“图书测试”关联了起来。
===
值得一提的是,在dp2batch模块中,某些“批处理方案”通过脚本调用上述查重窗口,实现了外部数据批处理一边转入一边查重的功能。经查重表明重了的记录,就被跳过不会转入了。很典型的例子是,对外部采购数据批处理装入“征订数据库”,就需要有这样的查重能力。