使用 Perl 和向量空间搜索引擎搜索和显示轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)数据库中的记录。使用字母和数字的变形,通过结构化 LDAP 数据创建有用的向量空间。并且显示与每个输入查询最适当的匹配,同时自动修正印刷错误和拼写错误。
介绍向量空间搜索的文章通常都从介绍向量空间并说明如何将指定查询投射到项空间 (term space) 中开始。让我们通过以下示例来逆向工作:假设指定查询 Nathen,我们需要按照该顺序匹配 Nathan 和 Jonathan 的数据项。现有方法可能涉及根据词的词干或变音位构建正则表达式,以及其他搜索词的语言派生词。在我们的例子中,可以通过为词中的每个字母创建向量并返回向量空间中最接近的匹配结果来获得有效的搜索结果。在本例中,首先将打印 Nathan 结果,因为它的六个字母(向量)中有五个共有字母,而其次将打印 Jonathan,因为它的八个字母中只有五个共有字母。
本 文中的代码和描述高度简化地演示了向量空间及高效搜索向量空间的方法。幸运的是,我们有 Maciej Ceglowski 编写的优秀 Search::VectorSpace 模块来封装逻辑、算法和负载,便于高效地使用向量空间。要了解向量空间的理论和实践所需的所有信息和代码,请参阅 参考资料。
向量空间搜索方法通常适用于自由形式 (free-form) 的文本,包括帮助在向量空间中将一段文本与其他文本区分开来的某些词。Web 页面、科学研究报告和其他形式的自然语言作品最适于使用向量空间搜索方法。
LDAP 数据通常包含一组高度冗余的组件和一组惟一数据组件。姓氏(例如 harrington 与 herrington)、电话号码和其他字段的惟一性可能导致得到含糊的搜索结果,因为查询与数据集之间共有的向量数非常少。传统的向量空间方法将把诸如 harrington 之类的词作为一个向量来处理。但是,本文中使用的方法将把词中的每个字母作为一个向量来处理。能够忽略拼写错误(搜索名称时常会遇到此类问题)、不受印刷 错误的影响(例如 919-415-2042)、把每个字母数字字符分离为词变形是一种在向量空间搜索引擎中使用 LDAP 数据的快速而轻松的管理方法。
本文转自:IBM developerWorks 中国
请点击此处查看全文http://ibm.csdn.net/ISN_J.aspx?action=JMP&pointid=2499