`
hzxdark
  • 浏览: 77189 次
社区版块
存档分类
最新评论

开源全文搜索引擎框架JBOX-beta版发布

阅读更多
天刚完成的,做了好久了。一个纯java的全文搜索引擎框架。

做这个的目标是,更简单,更容易,以至任何一个懂java的人都可以很容易地搭建一个个人用的搜索引擎,例如个人站点的站内搜索。

主页:http://j-box.sourceforge.net/index_cn.html
API文档、QUICK START都有。

Jbox目前是beta版本,如果各位朋友发现bug了,麻烦发邮件到j-box-user@lists.sourceforge.net(如果发不成功,则发到yibin_h@users.sourceforge.net ,mailing list刚开通,还不大会用--!),谢谢了^_^

主页地CVS功能目前还没开通——sourceforge的CVS管理好复杂@_@...

有朋友问起,是否有像现在的GOOGLE一样输入一个词,给出相应相关词的功能。
是有的,不过不是像google一样是给出同一个词的各种组合,而是根据语义给出最相关的词。这个有一套相关性算法的,我的毕业设计做的就是那个。我的论文目前投到《中文信息学报》,还不知道审稿结果。因为没什么时间,那一部分的代码现在还没有整理出来,后续的版本会追加上去。

无论好与坏,可以的话希望能给点意见,我需要大家的意见来做进一步的改进和开发啊!谢谢了!
分享到:
评论
15 楼 eltonto 2007-10-13  
好帖当顶。
14 楼 yiding_he 2007-09-04  
非常有兴趣,研究下~~
13 楼 hzxdark 2007-09-03  
谢谢楼上的关注^_^

其他语言的切法还在观望,没有加上去,如果哪一天有外国的朋友感兴趣了,我会去做的:)

我会继续做下去的。对我来说,这个不是工作,而是兴趣哦,我很享受编写这个作品的过程的。
12 楼 magice 2007-09-03  
我所考虑的就如果大家使用你这套框架,楼主有没有长期负责的打算,比如说后续的更新升级会不会持续下去,有些开源的项目,起初写作者都很有抱负,但是到最后都不了了之了!
另外一点LZ提到的什么“德文的切法”等等的功能点我觉得没有什么必要,如果把英文和中文的做好,做强大就已经足够了,继续关注中。。。
11 楼 hzxdark 2007-09-03  
目前如果需要更好的实现只能自己去实现接口,在后续的版本会逐步改善各个模块。
我的时间不多,没办法一次性全部做的很完美(如果有朋友有兴趣一起来参与这个项目就好了^_^)。
10 楼 hzxdark 2007-09-03  
你指的哪方面的算法?JBOX当前版本里各个模块接口提供的实现的算法:
Spider: 广度优先算法;
切词: 正向最大匹配;
索引: 反序索引;
排序: 计算TFIDF,简单的根据TFIDF排序。
9 楼 ray_linn 2007-09-03  
你用的算法是??
8 楼 danizhg 2007-09-03  
最近我也在看这方面的东西, 欣赏楼主的态度,有时间学习一下
7 楼 hzxdark 2007-09-03  
imjl 写道
1. LUCENE本身只是一个检索框架,需要做成完整的搜索引擎的话还需要再去学NUTCH,然后再去研究两者之间的整合,这过程理解起来不容易;
JL:可以不学nutch,自己写个爬虫。一些公司的几个爬虫都是自己写的。精确度比较好。属于垂直类的爬虫。


2. LUCENE对数据库的支持度不好,虽说有数据库扩展包,但LUCENE主页上的FAQ也说了,并不理想。而对于大规模数据我比较倾向于数据库,所以在当时在看LUCENE时第一想法其实是能不能开发一个更好的基于数据库扩展包,不过后来发现这个扩展好复杂。
JL:大规模数据用数据库?多大的规模呢?google没用。是否需要支持数据库,lucene世界一直有两种看法。支持人数少的那部分认为需要支持数据库,多的认为没必要。


3. LUCENE对中文的支持度不够(虽然有很多人做了中文的扩展就是了);
中文分词的确比较难找合适的。收费的有不错的。


4. 最后一点,也是让我最不舒服的一点,LUCENE的源代码,如果有看的人应该可以发现,很多地方并不是很符合面向对象的,看起来很费劲,也很难理解。
JL:呵呵,我和你看法不同。


谢谢imjl的关注^_^

1.就像我在帖子里一开始就说的,JBOX的目的是简单,易用,这也是我设计时考虑的最首要因素。LUCENE从开始学,到知道要如何自己写一个爬虫不那么容易吧?我想各自定位的不一样。JBOX的扩展没那么复杂,实现一个Spider接口里2个方法(boolean hasNext()、Page Next()),在配置文件指定自己所扩展的Spider就完事了。

2.不过有没有必要,我想既然有人有这个需要,那么做出来就是有意义的了。PS:LUCENE的索引技术确实很强大,我是非常敬佩作者那样的设计的。

3.对这一点我一直有点恼火,国内很多东西,动不动就收钱。不过一个算法,就沾沾自喜,等着钱,钱。技术共享、交流的精神这些人一点都没体会到……?

4.JL要是看的很顺,可以的话,有时间能否把LUCENE分词的设计整理出来共享下?可能我水平不够,看到眼痛啊……

设计心得的话,没个底,不知道讲啥……
6 楼 williamy 2007-09-03  
Lucene这个东西,根本就不是java世界的,硬是用java语言来表达而已,跟java根本没有什么关系啊,老子干脆不学
5 楼 imjl 2007-09-03  
我欣赏你自己开发,但我没那么多时间去读源代码,也没时间做小白鼠。

如果你能分享你的设计心得,那么我想会很乐意的学习下。
4 楼 imjl 2007-09-03  
1. LUCENE本身只是一个检索框架,需要做成完整的搜索引擎的话还需要再去学NUTCH,然后再去研究两者之间的整合,这过程理解起来不容易;
JL:可以不学nutch,自己写个爬虫。一些公司的几个爬虫都是自己写的。精确度比较好。属于垂直类的爬虫。


2. LUCENE对数据库的支持度不好,虽说有数据库扩展包,但LUCENE主页上的FAQ也说了,并不理想。而对于大规模数据我比较倾向于数据库,所以在当时在看LUCENE时第一想法其实是能不能开发一个更好的基于数据库扩展包,不过后来发现这个扩展好复杂。
JL:大规模数据用数据库?多大的规模呢?google没用。是否需要支持数据库,lucene世界一直有两种看法。支持人数少的那部分认为需要支持数据库,多的认为没必要。


3. LUCENE对中文的支持度不够(虽然有很多人做了中文的扩展就是了);
中文分词的确比较难找合适的。收费的有不错的。


4. 最后一点,也是让我最不舒服的一点,LUCENE的源代码,如果有看的人应该可以发现,很多地方并不是很符合面向对象的,看起来很费劲,也很难理解。
JL:呵呵,我和你看法不同。
3 楼 hzxdark 2007-09-02  
全新开发的啊!不是用了LUCENE的API!
2 楼 hzxdark 2007-09-02  
有朋友问到,我的这个项目跟LUCENE的区别,下面说说。

开发这个之前我也考虑过LUCENE,但在仔细看了LUCENE之后,有4个地方让我觉得不舒服,于是突然就萌生了想自己做一个这样的东西出来的想法。

1. LUCENE本身只是一个检索框架,需要做成完整的搜索引擎的话还需要再去学NUTCH,然后再去研究两者之间的整合,这过程理解起来不容易;
2. LUCENE对数据库的支持度不好,虽说有数据库扩展包,但LUCENE主页上的FAQ也说了,并不理想。而对于大规模数据我比较倾向于数据库,所以在当时在看LUCENE时第一想法其实是能不能开发一个更好的基于数据库扩展包,不过后来发现这个扩展好复杂。
3. LUCENE对中文的支持度不够(虽然有很多人做了中文的扩展就是了);
4. 最后一点,也是让我最不舒服的一点,LUCENE的源代码,如果有看的人应该可以发现,很多地方并不是很符合面向对象的,看起来很费劲,也很难理解。例如,因为我英文语法不行,所以英文分析参照了LUCENE(org.apache.lucene.analysis.PorterStemmer这个类),发现LUCENE的处理方法是传入一个字符串后,定义全局变量做下标,利用全局下标在字符串之间移动处理(其中还有一些方法是单纯用于移动下标的,意义不明……)。很难表达我当时那种感觉,总之,感觉很别扭,不自在。或许这样做可以提高分词的性能,但我还是比较喜欢面向对象的处理方法;

在之后做JBOX的时候,就是根据上面对LUCENE不满的地方做的。
1. JBOX最首要的目的,是简单。要让开发变得更简单,个人认为,这是框架的首要责任。当然,或许目前我这个作品可能依然不够简单性,在后续的版本我会继续努力改进。
2. JBOX第二个目的是纯粹的面向数据库。因为相信有很多人跟我一样,应用程序都习惯搭建在数据库上,由其是大规模的数据。目前的版本中,持久层是用HIBERNATE做的,这影响了存储索引时的效率,我在尝试写存储过程来代替HIBERNATE在存储的部分的功能,以提高效率,后续的版本会追加这一点;
3. JBOX分词的出发点不是西方文字,而是中文(毕竟还是母语熟悉,其他语言的分词好难懂,呜呜……)。分词部分完整的我没有看LUCENE怎么实现,JBOX的实现方式是利用责任链对多语言文本进行切词,虽然目前仅实现了英文跟中文就是了。(德文的切法正在看LUCENE的实现中,就如上面所说的,难懂……);
4. JBOX的结构是尽量按面向对象的思想设计的,目前我还在继续改进中。其实如果单单只是要搜索引擎的功能,3个月前我就已经做好了。但为了让其结构更容易理解,更容易扩展,更加贴近面向对象,这个过程整整消耗了我3个月时间。(想想真很辛苦,我也要上班养活自己,时间都是挤出来的,唉。);
5. 最后,类似google那样相关词搜索的功能,LUCENE没有吧?这个就如我上面帖子里说的,我已经实现了,只是还没整理。相关算法的论文也在审稿中,9月15号后才能知道结果(编辑部回答时15号后在问,没说15号后多少,呜……);

最后,JBOX当然不可能代替LUCENE,我也没那么自大去做这种事。例如LUCENE在文件索引,数据库索引方面我是暂时没打算做的。JBOX的当前目的只是,网站上的搜索引擎,其他的检索还是要LUCENE。


1 楼 licco1 2007-09-02  
是自己重新开发的,还是使用了lucene的API的呀?强人,学习

相关推荐

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java开源包101

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    JAVA上百实例源码以及开源项目源代码

    Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

    Java资源包01

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

Global site tag (gtag.js) - Google Analytics