随笔-6  评论-6  文章-2  trackbacks-0
原文:http://hedong.3322.org/archives/000206.html

Lucene是一套全文检索的API,对其介绍的文章和应用的案例都多,可参考lucene及本文的参考文献。
  此次学习,以实用为主,一是简单应用,二是Web应用,三是汉化,四相关应用(Lucene主页上在SandBox中)。

0、准备工作
  去Lucene的主页下载目前的稳定版本lucene-1.2.tar.gz,解压缩,将lucene-1.2目录下的两个jar文件lucene-1.2.jar和lucene-demo2-1.2.jar放到适当的目录下后,并将其加入到CLASSPATH环境变量中。

tar zxvf lucene-1.2.tar.gz <----解压缩
cd lucene-1.2
cp *.jar $DP<---存放jar文件的目录,根据具体工作要求用实际目录替换
CLASSPATH=$CLASSPATH:$DP/lucene-1.2.jar:$DP/lucene-demos-1.2.jar; export CLASSPATH
winclasspath.gif如果不想在每次都登录后,可以编辑/etc/profile或自己目录下的.profile,将上面的最后一行加到文件的最后一行。Windows的设置,右击桌面的“我的电脑”,选“高级”->“环境变量”->选中CLASSPATH->“编辑”,在输入框中加入两个jar文件的全路径名,注意分隔符是分号(;)。参见右图。

1、运行demo

$ java org.apache.lucene.demo.IndexFiles /usr/local/man/man1/ <--对man文件建立索引
adding /usr/local/man/man1/mysql.1
...........
adding /usr/local/man/man1/cvs.1
1614 total milliseconds
$ java org.apache.lucene.demo.SearchFiles <--进行检索
Query: password
Searching for: password
7 total matching documents
0. /usr/local/man/man1/mysql.1
......
6. /usr/local/man/man1/mysqlshow.1
Query:
OK!Lucene自待的demo运行成功
这个demo程序调用的主要API函数:
/*关于索引的主要函数*/
File file=new File(argv[]);
IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);

Document doc = new Document();
doc.add(Field.Text("path", file.getPath()));
doc.add(Field.Keyword("modified",DateField.timeToString(file.lastModified())));
FileInputStream is = new FileInputStream(f);
Reader reader = new BufferedReader(new InputStreamReader(is));
doc.add(Field.Text("contents", reader));

writer.addDocument(doc);

writer.optimize();
writer.close();

/*关于检索的主要函数*/
Searcher searcher = new IndexSearcher("index");
Analyzer analyzer = new StandardAnalyzer();
Query query = QueryParser.parse(lineforsearch, "contents", analyzer);
Hits hits = searcher.search(query);
for (int i = start; i < hits.length(); i++) {
Document doc = hits.doc(i);
String path = doc.get("path");
System.out.println(i + ". " + path);
}


3、运行LuceneWeb
  假定tomcat装在$TOMCATHOME目录下,具体应用时用真实的目录替换$TOMCATHOME。

cd $TOMCATHOME/webapps
mkdir lucenedb
cd lucenedb
java org.apache.lucene.demo.IndexHTML -create -index $TOMCAT/webapps/lucenedb ../examples<--用相对路径“..”,一来指明被索引的文件的位置,二来用来显示被索引文件的URL,因为检索的jsp程序在luceneweb子目录下.examples可用其它的真实应用的目录名来替换
cd ..
cp ~/lucene-1.2/luceneweb.war . <--luceneweb.war在你解压缩生成的lucene-1.2目录下
../bin/shudown.sh
../bin/startup.sh

然后通过客户端访问http://yourdomain.com:8080/luceneweb,如果顺利浏览器应出现右边所示的内容。luceneweb-1.gif.再到服务器端
cd luceneweb
vi configuration.jsp <--将indexLocation 的值改为 "$TOMCATHOME/webapps/lucenedb";
cd ..
jar -ur luceneweb.war luceneweb
再到客户端,刷新刚才的页面,然后就可以输入单词进行检索了。遗憾的是,此是只能检索英文单词。且如果命中的html页面的title是汉字的话,显示也有问题。如图。
luceneweb-2.gif
  此处的IndexHTML,可以对htm、html和txt类型的文件进行索引,用的是一个HTMLParser,除此以外与上一例基本相同。
posted on 2005-06-30 11:33 gaich 阅读(621) 评论(0)  编辑  收藏 所属分类: J2EE应用

只有注册用户登录后才能发表评论。


网站导航: