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

版本: lucene-3.2.0-src.tgz

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文件路径里的教程。

(转载请注明出处)

Logo

更多推荐