好消息:终于搞定一个全文检索引擎 - lucene(0分)

  • 主题发起人 主题发起人 yysun
  • 开始时间 开始时间
我也想要,拿出来让大伙都学习学习吧?大伙凑份子请孙老大
 
看来真的要学好英文了,老大给的文章 都不会看。
 
我也想要,可是怕没人理我.那位富翁有就发给我一份.谢先!kunmeng@sina.com
 
速度惊人哪,说实话以前并不觉得yysun是顶尖高手,这次算服了。
再一次发现自己乃井底之wa呀,井底之wa.
 
有人把 Lucene 改写成 C#,能运行到 .NET 平台了 !
http://sourceforge.net/projects/nlucene
我把我的中文包也改成了 C#,使它能处理中文了。[:D]
 
向高手致敬。
[8D][8D][8D]
 
老板啊,中文包呢~~~呵呵
另外,既然成c#了,那么那个什么JavaCC想必也搞顶了吧?我倒是想把它转成纯c++的
 
这个 C# 版本就是用了我上面说的“硬改 JavaCC 生成 7 个 Java 类”的方法。
 
也就是查询的语法分析部分被固定了,或者说,职能使用它给出的查询方法。
另外,C#版本的中文包公布不公布啊老板:)
 
yysun:
恭喜了,不过这个工作量可真够大的。
 
请问yysun关于在cocoon中使用lucene作为全文搜索的中文问题。cocoon中的request generator
好象有不能正确解析中文的问题。所以无论xsp:get-parameter 还是request.getParameter都不能
正确传递中文,这是如何配置才能解决的?
还有如果我想查询数据库,可不可以把查询结果印成xml然后再利用lucene的索引得出?
谢谢!mwang@haitaiinc.com
 
yysun,本站全文检索有源程序可以下吗?我比较菜,看了上面每篇文章,还是没看出那能载,
先谢谢各位了,那里载?
 
经过研究,把lucene的中文搜索的用法公布一下。
另外,在这里顺便问一下:
1.有没有人用过cocoon,它的中文问题很令人烦恼,猜想主要是编码部分许多地方默认的有问题。
2.http://www.sourceforge.net大家能不能连上?我这里很久连不上了,很多东西下不了。
3.有谁能把以前的kjava包发给我(j2me_cldc-1_0_2-fcs-kjava_overlay.zip)。虽然比较过时了,但是我找不到。
如有错误,欢迎指正!
lucene使用中文检索的方法,这里以在Win2k,jbuilder6,Resin2.1下为例
1.下载lucene1.2和lucene Analyzer cn。
分别在http://jakarta.apache.org/builds/jakarta-lucene/release/v1.2/lucene-1.2.zip和http://marc.theaimsgroup.com/?l=lucene-dev&m=100705753831746&q=p3
2.解开lucene-1.2.zip到任何目录下,可以看到有lucene-demos-1.2.jar和luceneweb.war这2个文件。把luceneweb.war拷贝到resin的webapp目录下。把lucene-demos-1.2.jar加入到jbuilder6的lib中。
3.在lucene-1.2.zip解开的目录下还有lucene-1.2.jar,加入到jbuilder6的lib中。同时,在jbuilder6中建一个项目,包含以上加入的lib,加入yysun写的cn Analyzer源代码。编译后打包,生成新的lucene-1.2.jar(也可以单独作一个包lucene-1.2cn.jar),包括原来的standard和de还有新的cn Analyzer,以代替原来的lucene-1.2.jar。把新做好的lucene覆盖resin/webapp/luceneweb.war中的原来的lucene-1.2.jar;为了方便,把jbuilder使用的那个也覆盖了。
4.在解开lucene-1.2.zip的目录的src/demo/org/apache/lucene/demo下把IndexHTML.java也加入到步骤5中生成的项目中。在该文件中寻找Analyzer,一共有2处。在第一处"import org.apache.lucene.analysis.standard.StandardAnalyzer;"下面加一行"import org.apache.lucene.analysis.cn.ChineseAnalyzer;",把第2处"writer = new IndexWriter(index, new StandardAnalyzer(), create);"删除或者注释掉,换成"writer = new IndexWriter(index, new ChineseAnalyzer(), create);",修改项目的应用的运行主类为org.apache.lucene.demo.IndexHTML,运行参数为-create -index /index /root。其中/index表示索引文件存放的位置(这里表示在该项目相同的分区的根目录的子目录index下),/root表示你需要建立查找索引的文件所在的位置(是文件目录形式,一般为你需要建立全文搜索的站点的根,可以搜索到子目录下的文件,可以是任何文本格式的文件,如html、txt,不支持url,但是可以自行修改源代码添加这个特性。同样,你也可以实现自己的indexer代替IndexHTML以制作如doc,rtf,pdf等的索引)。执行Run操作后,可以看到,index目录下已经建立了许多索引文件。
5.用Winzip打开已经拷贝到resin的webapp下的luceneweb.war,释放出configuration.jsp和result.jsp还有web.xml。编辑configuration.jsp,找到indexLocation这个变量,赋值成"/index"(或者你自己建立的索引的目录名称);编辑result.jsp,找到"Analyzer analyzer = new StopAnalyzer();",删除或者注释掉,改成"Analyzer analyzer=new org.apache.lucene.analysis.cn.ChineseAnalyzer();"。然后,在import的标签的下面,加上
<%
String CONTENT_TYPE = "text/html;
charset=utf-8";
response.setHeader("Content-Type",CONTENT_TYPE);
request.setCharacterEncoding("utf-8");
%>
解决编码问题。然后修改web.xml,在webapp这个元素中加上属性 character-encoding="utf-8"(即这样<web-app character-encoding="utf-8" >)。这样子就可以与jsp和具体的编码无关了。把编辑过的上述文件用winzip重新加入到luceneweb.war中去。
6.启动resin,会自动解包。在浏览器中键入"http://localhost/luceneweb/"(注意你自己的resin服务器使用的端口),可以看到输入界面。键入你希望查找的中文或者英文,如果存在应该可以找得到并且会列出url列表和部分信息。如果你的目录设置正确,可以通过url连结打开找到的文件。
7.cn Analyzer只是区分了英文数字和其它字符。也就是说,如果是letter或者数字,就读一个byte,如果是其他字符,就读2个byte。这样如果你的文件中有日文和韩文等也是可以找的到的。但是,中文的语义匹配就不可能了,只能做到单字查找。Analyzer就是通过一系列的过滤,得到TokenStream建立索引的。我们完全可以建立自己的索引生成器,如数据库的(有人写过mysql的,但是还没有发布)、Xml的(已经有lucene_xml)等等,而且lucene的搜索速度很快。
 
楼上关于Cocoon的问题见我主页的文章
http://www.8421.org/article.php?id=207
 
我以前没用过JAVA,不过为了看看lucene,只好研究一下,我已经装了jbuild,但不知该如何编译,另外还需装什么软件才能运行lucene的demo。thanks!please help!!
 
提示:
ERROR opening the Index - contact sysadmin!
While parsing query: D:/avi/segments (???????????)
是什么意思?
自问自答,呵呵,
由于索引没有建好的缘故;
java org.apache.lucene.demo.IndexHTML -create -index {c:/temp} ..
索引建好,就可以搞定
确实很爽!
 
我没学过JAVA,如何才能运行LUCENE的DEMO,为什么按SEARCH按钮后总是不能编译SEARCH.JHTML文件。需要安装什么软件???/help!!!!
 
YYSUN,您好!
我想用 C# 版的 lucene,能否提供一下 C# 版本的中文包啊?
期待您的答复。
最近看见 lucene 已经有人做成 C++ 版本的了,这个项目应该是很不错了。
 

Similar threads

后退
顶部