设为首页 收藏本站
查看: 1221|回复: 0

[经验分享] 介绍一下Hyper Estraier

[复制链接]

尚未签到

发表于 2015-4-2 15:48:30 | 显示全部楼层 |阅读模式
本帖最后由 wuyvzhang 于 2016-8-2 17:26 编辑

Hyper Estraier 是一个来自日本的全文搜索引擎,作者是 Mikio Hirabayashi,目前最高版本是1.49。 可以从这里下载编译好的版本 这个引擎使用C语言开发,另外还提供了java以及rubyperl语言的上层API。该引擎使用2.1版本的GNU Lesser General Public License作为开源协议,LGPL算是一个商业友好的License吧,大家可以放心地用在自己的工程中。 hyperestraier-1.4.9-win32.zip解压缩到d:\hyperestraier文件夹,从中可以找到README-en.txt这个文件,这个文件中简要介绍了重要文件的清单,大家可以先看一下,熟悉下情况,其中重点关注的是estcmd.exeestraier.jar。 下面主要围绕这两个文件做下介绍 estcmd.exe是一个命令行工具,通过它,可以完成基本的搜索工作,供大家测试之用; estraier.jar的全称是Java Binding of Hyper Estraier,是一个使用JNI技术的上层JAVA API,通过它,可以使用JAVA编程来调用这个引擎。 estcmd.exe的核心命令有两个,分别是gather(创建索引)search(搜索)。 下面我们实战一下 首先创建一个文件夹d:\myData,然后找些htm以及txt文件copy进去 在开始菜单-〉运行中键入cmd,打开命令行界面,切换到estcmd.exe所在的文件夹,运行下面的命令 estcmd gather -sd myData d:\myData 这个命令的意思是,对d:\myData下的所有文件建立索引,索引数据库的名称为myData 命令运行后,可以在看到目录下的所有文件被一一registered,最后,会提示 estcmd:INFO:finished successfully:elapsed time: *h *m *s 其中*表示创建索引所花费的时间 这样,索引就建好了,dir一下,可以发现,当前目录下多了一个叫做myData的文件夹,这就是索引库 来,让我们体验一下全文搜索的魅力吧 运行下面的命令 estcmd search -ic Shift-Jis -vx myData どうぞ 这个意思是以Shift-Jis作为编码格式,在索引库myData中,搜索どうぞ,如果不需要指定编码格式,则可以去掉 –ic Shift-Jis命令 呵呵,看到搜索结果了吧,如果觉得搜索结果可读性不好,也可以将 –vx指令换成 –vh,这样,将把输出结果由xml格式变为摘要格式 喝口水,接着说 下面介绍如何通过JAVA API来完成同样的工作 首先,在操作系统的系统环境变量中,找到PATH,向其中加入d:\hyperestraier 然后,打开Eclipse,新建一个项目,并在Build PathAdd External JARs,添加对前面提到的estraier.jar的引用 最后,在代码中,import estraier.*; 好了,可以写程序了 Database db = new Database(); if(!db.open("D:\\hyperestraier\\myData", Database.DBWRITER | Database.DBCREAT)){ System.err.println("error: " + db.err_msg(db.error())); return; } Document doc = new Document(); doc.add_attr("@uri", "d:\\myData\\helloworld.txt"); doc.add_attr("@title", "helloworld"); doc.add_attr("otherAttribute", "attributeValue"); doc.add_text("life's made up of little things."); if(!db.put_doc(doc, Database.PDCLEAN)) System.err.println("error: " + db.err_msg(db.error())); if(!db.close()) System.err.println("error: " + db.err_msg(db.error())); 程序的大意是,新建或打开索引库D:\hyperestraier\myData 向其中添加一个文档,文档的地址是d:\myData\helloworld.txt 文档标题为helloworld 这个文档还有一个额外的自定义属性,属性的名/值为otherAttribute/ attributeValue 文档的内容为life's made up of little things 还差最后一点,就是通过程序检索了 Database db = new Database(); if(!db.open("D:\\hyperestraier\\myData", Database.DBREADER)){ System.err.println("error msg: " + db.err_msg(db.error())); return; } Condition cond = new Condition(); //cond.add_attr("otherAttribute STREQ value"); //cond.add_attr("@title STRINC hello"); for(int i = 0; i < result.doc_num(); i++){ Document doc = db.get_doc(result.get_doc_id(i), 0); if(doc == null) continue; String uri = doc.attr("@uri"); if(uri != null) System.out.println("URI: " + uri); String title = doc.attr("@title"); if(title != null) System.out.println("Title: " + title); String myAttr = doc.attr("otherAttribute"); if(myAttr != null) System.out.println("otherAttribute:" + myAttr); else System.out.println("there's no attr named otherAttribute "); Iterator it = doc.texts().iterator(); while(it.hasNext()){ System.out.println((String)it.next()); } } if(!db.close()) System.err.println("error: " + db.err_msg(db.error())); 程序的大意是,对索引库D:\hyperestraier\myData,检索关键词,然后把前5条结果输出 程序中还注释掉了一些检索条件留给大家探索哈 啰罗嗦嗦写了半天,就先介绍到这里吧,进一步的学习,大家可以参考D:\hyperestraier下的doc文件夹中的帮助,帮助有英/日两国文字,总有一款适合您 SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投㈩注任何游戏顶级信用㈩提现即时到账SO.CC

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-53206-1-1.html 上篇帖子: [运维网] 让VS2010 CTP 运行在Hyper-V 上 下篇帖子: Hyper-V NAT
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表