因为这个版本比较新,在网上也没找到合适的文章,参考了很多文章,还有自己出了一些错误改了很久,现在分享一下经验。 找不到或无法加载主类 org.apache.lucene
一:环境准备
到官网下载lucene包http://lucene.apache.org/,4.6.0已经出来了,我下的就是这个版本lucene-4.6.0,而且4.5.0版本的配置和下面所述的应该一样。解压缩出来,随便放在哪个目录下就可以,和以往老版本的不同,这个文件中包含了很多文件,jar包也分布在这些文件中,如:
其实你已经完成了一半了。
二:demo程序演示
此时分成两种情况:
1:在控制台中运行lucene提供的demo程序。
2:在eclipse/myeclipse中运行demo程序。
先来看看第一种情况:在控制台中运行lucene提供的demo程序
1.1 首先需要四个jar文件,以下是官网的一段话:
You need four JARs: the Lucene JAR, the queryparser JAR, the common analysis JAR, and the Lucene demo JAR. You should see the Lucene JAR file in the core/ directory you created when you extracted the archive -- it should be named something like
Put all four of these files in your Java CLASSPATH.
只需要好好看看那四个jar文件的名字就很容易的猜出这个四个jar文件在哪里:在你下载的lucene包中的analysis/common,core,demo,queryparser文件夹中。
然后将这四个jar文件设置到classpath中。
(注意,此时classpath中的变量值类似为 C:\lucene-4.6.0\analysis\common\lucene-analyzers-common-4.6.0.jar
1.2 然后建立两个文件夹:index文件夹和docs文件夹。docs文件夹下存放你要分析的文件,我这里新建了两个txt文件,分别为test1和test2,里面可以输入一些文本(目前只测了英文的,中文的还没试过)。index文件夹目前为空,它将会保存你使用lucene创建的索引文件。我这里两个文件夹的目录为
C:\D-SoftwareInstall\GreenSoftWare\lucene-4.6.0\sybil_doc\index,和
C:\D-SoftwareInstall\GreenSoftWare\lucene-4.6.0\sybil_doc\docs
1.3
首先在控制台打开你存放index和docs文件夹的目录,比如:
cd
然后再输入
java org.apache.lucene.demo.IndexFiles -index 索引文件存放路径 -docs 要分析的文件存放路径
索引文件存放路径可以为
C:\D-SoftwareInstall\GreenSoftWare\lucene-4.6.0\sybil_doc\index
要分析的文件存放路径可以为
C:\D-SoftwareInstall\GreenSoftWare\lucene-4.6.0\sybil_doc\docs
(这是在创建索引,-index指定索引文件放在哪里,-docs指定文件来源在哪里(就是你要搜索的文件位置),还有一个-update就是指定已经存在的哪个索引不需要删除。
-index如果不写,那么默认索引文件在你控制台当前位置的index文件夹下。你可以这样写:-docs
现在你的索引已经创建好了,接下来就是搜索了。
继续在控制台中输入:
java org.apache.lucene.demo.SearchFiles
控制台会提示你输入你要搜索的数据。则显示
Enter query
输入要查询的文本
控制台返回结果
这样就完成了demo程序。
第二种情况:在eclipse/myeclipse中运行demo程序
你在IDE中新建一个java project,将上面的那四个jar文件加入到工程中。完成了!!!!你现在可以自己写程序了。什么indexwriter都可以找到了。但是源码还是找不到,你必须把源码也加入到工程中。去官网下载一个lucene-4.5.0-src包,这就是源码包,解压之后,分别为每个jar文件导入源码,以core为例:lucene-4.5.0-src\lucene-4.5.0\core\src\java。将四个jar包对应的源码都导入到工程中,import,file sys,路径都选择到src\java为止。得到的工程结构如下图:
你运行demo中的IndexFiles.class(运行项目,选择IndexFile.java)。设置arguments:-index d:/index/test -docs G:/lucene/lucene-4.5.0/src。
(设置arguments的方法,Run configurations,Arguments设置为-index 索引文件存放路径 -docs 被搜索文件存放路径)
这里我指定了索引文件在d:/index/test,搜索文件在G:/lucene/lucene-4.5.0/src(这个文件必须存在)。运行之后,控制台会输出:
Indexing to directory 'd:/index/test'...
adding G:\lucene\lucene-4.5.0\src\1.txt
adding G:\lucene\lucene-4.5.0\src\2.txt
adding G:\lucene\lucene-4.5.0\src\3.txt
1634 total milliseconds
我这里是在G:/lucene/lucene-4.5.0/src文件夹中放了三个文本文件。
目前索引创建完成。接下来是搜索。
运行SearchFiles.class(运行项目,选择SearchFiles.java)。运行结果是:
Enter query:
a
Searching for:
0 total matching documents
Enter query:
string
Searching for: string
1 total matching documents
1. G:\lucene\lucene-4.5.0\src\3.txt
Press (q)uit or enter number to jump to a page.
随便提一下:输入a时说没有找到文档,但事实上我文本文件中有这个词,只是在lucene中有一种stop word,这类词没什么含义,不能作为关键词,像这样的词还有this,the等。
这样就完成了demo程序的演示。lucene版本的那个伟大的程序HelloWorld也就完成啦。