dp2编目系统在为数据库记录创建检索点的时候,可以对繁体和简体汉字进行归一转换,以保证访问者不论输入繁体还是简体汉字,都可以检索命中。
这种归一转换,请注意是针对系统内部“检索点” 而进行的,不是在修改MARC数据本身。
下图演示了一条MARC记录的检索点详情:
从上图可以看出,“原始key”中的繁体字,被自动转换成简体字的“key”。
当用户在检索的时候,所发出的检索词,经软件自动预处理,把其中的繁体字转换为简体字,然后与检索点匹配。这样就得到了最满意的效果 -- 不论用户是否输入了繁体字,或者繁简体混合输入,都可以检索命中。
下面列出了中文图书库下keys配置文件和著者检索点相关的配置片断:
...
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='700']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='701']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='702']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='710']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='711']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<key>
<xpath nstable="">/marc:record/marc:datafield[@tag='712']/marc:subfield[@code='a']</xpath>
<from>contributor</from>
<table ref="contributor" />
</key>
<table name="contributor" id="7">
<convert>
<string style="upper,simplify" stopwordTable="title" />
</convert>
<convertquery>
<string style="upper,simplify" />
</convertquery>
<caption lang="zh-cn">责任者</caption>
<caption lang="en">Contributor</caption>
</table>
...
可以看出,数据记录构造检索点的时候,<convert>元素中采用了“upper,simplify”方式来加工检索点,即转为大写、简体化。而<convertquery>元素中同样配置了“upper,simplify”方式来预加工前端发来的检索词。
上例中采用了“简体化”的策略来统一繁简检索过程。这是针对大陆以简体字为主的情况配置的。dp2编目系统也允许按照“繁体化”的策略来归一(在<convert><convertquery>元素中运用“traditionalize”加工策略即可),这对于繁体字地区、古籍文献应用就比较适合。
===
繁简体归一化的技术,针对的是系统内部检索点。
而dp2编目系统存储MARC数据,也就是存储MARCXML格式数据,也就是存储XML数据,它采用的是Unicode字符集。所以,繁体和简体汉字在系统内是完全相容互不干扰的。
繁简体归一化技术,解决的是检索中繁简体通用的问题,请大家不要和数据存储这一课题混淆,两者的目的和对象都不同。它们之间也有关系,就是:正因为繁简体归一化检索点的好处,所以反过来我们不要求用户在MARC格式中专门增加转换后的繁体或简体字段,而是原样照录、忠实反映原貌即可。