Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
1
基于 Lemur 检索工具在本机上搭建检索平台
-----------------by 祁麟祁麟祁麟祁麟
一一一一、、、、 概述概述概述概述
先简单介绍一下先简单介绍一下先简单介绍一下先简单介绍一下 Lemur:Lemur:Lemur:Lemur:
话说 lemur,是卡耐基梅隆大学(CMU)以及马萨诸塞大学(UMass)联
合推出的支持信息检索以及语音模型的工具箱。整个系统由基于 UNIX 系统
的 C++开发,同时可以运行在 Windows 平台上,向上支持 C++、Java、C#接
口。系统的全部代码可以在开源社区进行下载,用户可以随时扩展并且所需
的功能。
Lemur 对于那些不想亲自写索引但是却希望将主要精力放在开发新技
术和算法上的研究人员在语言建模以及信息检索方面会有很大的帮助。Lem
ur 中提供了基本的检索算法,像 TFIDF 和 Okapi。我们已经实现了基本的 a
d hoc IR、distributed IR、IR using structured queries、IR using d
istributed indexes、and summarization。其它的方面,lemur 已经被用
来做过滤任务,网页搜寻,文章检索,以及简单的网络搜索引擎。
由于我们的目的是研究搜索的算法和由于我们的目的是研究搜索的算法和由于我们的目的是研究搜索的算法和由于我们的目的是研究搜索的算法和改进改进改进改进,,,,不必要不必要不必要不必要花过多花过多花过多花过多的时间来调试的时间来调试的时间来调试的时间来调试
平台的搭建和搜索工程的平台的搭建和搜索工程的平台的搭建和搜索工程的平台的搭建和搜索工程的建成上面建成上面建成上面建成上面,,,,所以在这里我写这样一篇文章所以在这里我写这样一篇文章所以在这里我写这样一篇文章所以在这里我写这样一篇文章,,,,介绍介绍介绍介绍一一一一
下搭建的过程下搭建的过程下搭建的过程下搭建的过程,,,,方便大家进行进一步研究和学习方便大家进行进一步研究和学习方便大家进行进一步研究和学习方便大家进行进一步研究和学习....也许第一次搭建这个平台也许第一次搭建这个平台也许第一次搭建这个平台也许第一次搭建这个平台
不太熟悉不太熟悉不太熟悉不太熟悉,,,,耗费一些时间耗费一些时间耗费一些时间耗费一些时间,,,,但是按照这个步骤一步一步来但是按照这个步骤一步一步来但是按照这个步骤一步一步来但是按照这个步骤一步一步来,,,,相信你很快就可相信你很快就可相信你很快就可相信你很快就可
以成功的以成功的以成功的以成功的~~~~
出于大多数人的习惯和我的知识和经验很有限的原因,这里我仅仅介绍
如何在 Windows 环境下配置基于 Visual Studio 2005 的 lemur 开发环境。
二二二二、、、、 搭建步搭建步搭建步搭建步骤骤骤骤
1、、、、 Lemur 工程的编译工程的编译工程的编译工程的编译
首先要到开源社区网站上(http://www.lemurproject.org/)下载 lemur 的最新
安装版本(截至目前最高版本为 4.9)。这里采取 lemur 4.7 版本做为介绍(搭建
过程基本没有区别)。在 Windows 环境下双击安装程序开始进行安装。
安装之后需要重新编译程序的源代码:
1) 打开文件夹下的 VS2005 工程,进行如下配置:
因为 Lemur 支持和需要 JAVA 接口,所以配置时需要将 JDK(从网上
下载或者到 FTP 上直接下载)的路径加入到工程属性之中,具体操作为:
找到 Lemur文件夹下的 src_vs_2005文件夹,用VS2005打开 Lemur.sln。
右击源代码中的”lemur_jni”工程,选择”Properties”,将配置选项设置为”All
Configurations”,在” Additional Include Directories ”中加入 JDK 的绝对路径,
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
2
单击 OK 即可,如下图所示:
这里请注意:列表中可能已经有 JDK 默认的位置了,但是也许不是
你自己安装 JDK 的位置,故需要改为你自己的电脑中 JDK 安装位置的绝
对路径。
2) 之后因为 lemur 有对于阿拉伯文的支持,而在中文系统中可能会出
现字符编码问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,所以需要屏蔽掉
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
到阿拉伯文处理的模块。具体方
法为:
找到parsing模块下的Arabic_Stemmer.cpp文件,将其中的函数内容
屏蔽,也可以简单地这样处理(将3个数组均置为空):
char *Arabic_Stemmer::defarticles[] ={NULL };
char *Arabic_Stemmer::suffixes[] = {NULL };
char *Arabic_Stemmer::stopwords[] = {NULL };
注意,这里不可以删除模块的内容,因为其他模块会调用相关的接
口,如果屏蔽掉接口会导致程序无法通过编译。(我就图省事直接删除,
结果报了一堆错,^o^)
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
3
3) 进行如上的配置之后,我们就可以进行编译了。在编译生成之后,
将编译好的 lemur.lib 文件(在 parsing 文件夹下)复制到 lemur 安装文件
的 lib 文件夹下,替换原来的 lib 文件。(这一步很重要)
2、、、、 应用程序平台的搭建应用程序平台的搭建应用程序平台的搭建应用程序平台的搭建
创建解决方案,对于工程属性进行如下配置:
1) 在"C/C++ / General / Additional Include Directories"中,
加入 lemur 的 include 文件夹的绝对路径。如下图所示
2) 在"Linker / General / Additional Library Directories
"中,加入 lemur 的 lib 文件夹的绝对路径。
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
4
3)))) 在"Linker / Input / Additional Dependencies"中,加入 lemur.lib
和 wsock32.lib。
4) 如果你的工程在 dubug 模式下,你要选择"Multi-threaded D
ebug DLL(/MDd)"运行库,如果你的工程在"Release"下,你
要使用"Multi-threaded DLL(/MD)"运行库。我选择的是 Rel
ease 模式。
完成了如上述的配置,我们的 lemur 使用工程就建立起来了!
*进行到这里还是有点辛苦的,小小激动一下!
3、、、、 运行后台运行后台运行后台运行后台程序程序程序程序,,,,实现实现实现实现 demo 中中中中 nnnlemur 功能功能功能功能 ( test_lemur )
1) 从实验室 FTP 上下载 demo\nnnlemur 文件夹中全部内容,建议保存在
F:\demo\nnnlemur 路径下,这只是为了后面的方便起见,不用改路径
而已,当然也可以保存在其他位置。
2) 用 VS2005 打开 nnnlemur 中 nnnlemur.sln,在属性配置中添加 JDK 绝对
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
5
路径、添加 lemur.lib 等过程类似 lemur 搭建过程,大家一定要有耐心,
按照上面的步骤再进行一次。注意,这里的运行模式一定要和 lemur
工程保持一致(都用 debug 或者都用 release)。
3) 大家可以打开 F:\demo\nnnlemur\release 文件夹,可以看到一个
search.bat 批处理文件,用记事本打开它。
可以看到 search.bat 中包含三部分文件,第一部分是要执行的程
序 nnnlemur.exe,后面两个文件都是这个程序运行需要输入的参数文
件:
cs.key 是索引文件的基本信息(
key),
这是搜索过程中所必须的,可以用 lemur\bin 目录下的 BuildIndex.exe
来建立自己的索引,关于建立索引将在之后详细说明,这里用的是师
兄已经建立好的索引文件,都存放在 cs_index 文件夹中。
query 是查询词文件,在之后的前台程序中输入查询词便会存放
在此文件中,按照 nnnlemur 中的代码,将被存放为
查询词
的格式,以方便调用 lemur 主程序来读取。
4) 如果之前没有改变 nnnlemur 存储的目录地址的话,现在就可以运行后
台程序了。
运行方法:
启动 cmd 命令行,将 search.bat 拖入命令行中,或者将目录改为
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
6
search.bat 所在的目录,运行 search.bat 即可!
成功后如下图所示
注:改目录的话就将批处理文件指向绝对地址,当然注意空格转义
字符的处理,否则会出现找不到的情况,也可以在命令行中直接用双
引号括起绝对地址来引用文件。
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
7
在编译过程中可能会遇到如上图所示的内存位置和.dll 文件等错误,这说明
库文件 lemur.lib,wsock32.lib或者 lemur\index\include, lemur\langmod\include等目
录没有包含成功,请检查一下,一定和 lemur 主程序中一样把所有的目录和库都
成功包含才可以。
至此至此至此至此,,,,我们已经将后台程序成功运行我们已经将后台程序成功运行我们已经将后台程序成功运行我们已经将后台程序成功运行啦啦啦啦!!!!
距离成功搭建一个检索平台只差一步了距离成功搭建一个检索平台只差一步了距离成功搭建一个检索平台只差一步了距离成功搭建一个检索平台只差一步了,,,,加油加油加油加油!!!!
4、、、、 前台搜索页面和服务器建立前台搜索页面和服务器建立前台搜索页面和服务器建立前台搜索页面和服务器建立
由于使用的师兄已经建立好的索引 ( cs_index\cs.key ),所以我们只需要
拥有师兄所使用的数据库和前台搜索页面就可以进行检索了。
1) 从实验室 FTP 的目录 ftp://202.38.93.57/prog/中将 citeseer_search
文件夹复制到本地,这里面就是前台的搜索和显示页面。
2) 从实验室 FTP 的目录 ftp://202.38.93.57/中将 wamp 文件夹复制到
本地,当然也可以从网上下载 wamp,运行后就在本机上搭建了
localhost 了.
3)Citeseer_search 中的 php 文件可以用 Dreamweaver 或者其他 PHP 程序
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
8
打开,
调整参数:
//search.php 文件:
$mysql_server="localhost";
$service_port =2000;
$address = "127.0.0.1";
//search_func.php 文件:
function connect_to_database()
{
$dbConnect=@mysql_connect("localhost","root","") or die("Sorry, Unable to
connect database server");
@mysql_select_db("citeseer",$dbConnect) or die("Sorry, No such database
exist!");
return $dbConnect;
}
保存后用浏览器加载运行 index.html 即可。
此时要保证后台程序一直在运行之中,这样才可以实现用 lemur 来搜索文
件的功能。
如下图所示:
输入关键词 search 即可得到结果!
Lib Lab 基于 Lemur 检索工具在本机上搭建检索平台 kealyn@mail.ustc.edu.cn
9
三三三三、、、、 结束语结束语结束语结束语
基于 Lemur 检索工具在本机上搭建检索平台 的主要过程到这里就介绍完了,
不知道有没有介绍清楚,这之中出现一些错误请大家随时告诉我。由于是刚刚接触这方面,
搭建这个简单的平台也花了我不少的时间,所以将自己的经验和
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
的步骤写在这里来帮助
之后的同学。
非常感谢李扬师兄和王鹏师兄的帮助!