赞
踩
1. 认识Lucene
类似一个全文搜索引擎,提供强大接口的程序库,方便各类应用为自身文档编写代码,建立全文索引,方便用户查询相关文件(如帮助服务)。
2. 在linux操作系统上部署Lucene
1)安装java jdk
由于Lucene是用java编写的应用,需要用到java开发环境。本文用到的java开发工具版本为 jdk-6u45-linux-i586.bin(32位Linux OS)。java jdk 安装过程如下:
sh jdk-6u45-linux-i586.bin
ln -s jdk1.6.0_45 java
上述代码将生成名为jdk1.6.0_45的文件路径。为了方便对java jdk进行更新,可以使用ln -s 创建链接。以后要更新的版本,只需ln -s 新版本就可以了。
安装java之后需要让系统找到java路径(目的是在终端中type java 指令的时候能被系统识别)。
cd ~
emacs .bashrc
注意要先进入到自己的home folder, 否则无法找到.bashrc。在文件最后一行添加java jdk的路径,具体如下:
export JAVA_HOME = /home/s0897918/java
export CLASSPATH = $JAVA_HOME/lib
export PATH = $PATH:$JAVA_HOME/bin
如果没有安装emacs, 使用vi也可。
保存退出文件后,要让当前终端识别新加入的环境变量还需要type
source .bashrc
或者重新打开一个新的终端。此时,在终端输入java指令,如果系统输出一大堆指令使用方法,那么安装成功。
2) 安装ant
ant是java的一款build工具,类似于大家常用的linux环境下对c/c++build的make。后面的lucene安装过程中需要对lucene自带的bulid文件进行编译,就要用到ant指令。本例中用到的ant版本为apache-ant-1.8.2-bin.tar.bz2。安装过程如下:
tar -xvf apache-ant-1.8.2-bin.tar.bz2
解压后生成名为 apache-ant-1.8.2的文件路径。
ln -s apache-ant-1.8.2 ant
生成链接后,为系统添加环境变量:
export ANT_HOME = /home/s0897918/ant
export PATH = $PATH:%ANT_HOME/bin
source ~/.bashrc
在终端输入ant,提示
Buildfile: build.xml does not exist!
Build failed
恭喜你,安装成功。Build failed的原因是因为当前路径没有build文件,跟没有MakeFile的原因一样。
3)开始安装Lucene
tar -xvf lucene-3.2.0-src.tgz
ln -s lucene-3.2.0 lucene
export LUCENE_HOME = /home/s0897918/lucene
lucene的安装就是这个样子,感觉一点意思都没有对吧? 跑一下lucene中demo,感受一下全文搜索引擎的魅力!
我们需要先生成lucene-core-{version}.jar和lucene-demo-{verison}.jar这两个文件。(因为这两个文件包含了建立索引和开始搜索需要的各种java 类,有点像C中的库文件)
cd lucene
ant //注释: 在lucene/build 下生成lucene-core-3.2-snapshot.jar (完成一半工作了)
cd contrib/demo
ant //注释: 生成lucene-demo-3.2-snapshot.jar,位置在lucene/build/contrib/demo下
在环境变量CLASSPATH中添加这2个打包文件,他们包含了建立索引和开始检索需要的java类文件。
export CLASSPATH=$JAVA_HOME/lib:$LUCENE_HOME/build/lucene-core-3.2-SNAPSHOT.jar:$LUCENE_HOME/build/contrib/demo/lucene-demo-3.2-SNAPSHOT.jar
好了,现在我们可以跑一下demo了。我们先给lucene文件夹下面的src建立索引,具体如下:
java org.apache.lucene.demo.IndexFiles -docs $LUCENE_HOME/src
生成一个index的索引文件路径,位于$LUCENE_HOME/build/contrib/demo下。
现在可以对src进行检索,比如我们要检索一下包含lucene关键词的文件有哪些:
java org.apache.lucene.demo.SearchFiles
Enter query:
lucene
Searching for: lucene
201 total matching documents
1. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/index.xml
2. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/gettingstarted.xml
3. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/demo.xml
4. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/scoring.xml
5. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/lucene-contrib/index.xml
6. /home/s0897918/lucene-3.2.0/src/java/overview.html
7. /home/s0897918/lucene-3.2.0/src/test-framework/overview.html
8. /home/s0897918/lucene-3.2.0/src/site/src/documentation/content/xdocs/demo2.xml
9. /home/s0897918/lucene-3.2.0/src/test/org/apache/lucene/analysis/LuceneResourcesWikiPageURLs.txt
10. /home/s0897918/lucene-3.2.0/src/test/org/apache/lucene/util/makeEuroparlLineFile.py
Press (n)ext page, (q)uit or enter number to jump to a page.
要注意搜索时当前路径必须包含index文件夹,否则会有如下报错:
Exception in thread "main" org.apache.lucene.store.NoSuchDirectoryException: directory '/home/s0897918/lucene-3.2.0/build/contrib/index' does not exist
at org.apache.lucene.store.FSDirectory.listAll(FSDirectory.java:229)
at org.apache.lucene.store.FSDirectory.listAll(FSDirectory.java:252)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:640)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:428)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:288)
at org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:92)
at org.apache.lucene.demo.SearchFiles.main(SearchFiles.java:89)
有关其他demo的使用,可以参见lucene文件夹下面的docs文件路径里的教程。
(转载请注明出处)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。