首先安装eclipse与JDK环境,确保能运行java程序
然后下载lucene的java包(我下载的是lucene3.6.1版本)
新建一个java工程,在依赖包的地方添加lucene依赖(最基本的两个依赖文件,其他扩展依赖的可以在contrib文件夹中找到)
在现有项目中添加依赖包的方法:Project->Property->Java Build Path->Libraries->(Add External JARs...)
import java.io.File;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.*;
import org.apache.lucene.search.*;
import org.apache.lucene.store.*;
import org.apache.lucene.util.Version;
//import org.apache.lucene.queryParser.*;
public class searchTest {
File file = null;
FSDirectory dir = null;
IndexWriterConfig conf = null;
IndexWriter writer = null;
public searchTest(){
try{
file = new File("d://luc");
dir = FSDirectory.open(file);
conf = new IndexWriterConfig(Version.LUCENE_36,new StandardAnalyzer(Version.LUCENE_36));
writer = new IndexWriter(dir, conf);
}
catch(Exception e){
e.printStackTrace();
}
}
//push some data
public void Save(){
Document doc1 = new Document();
Field f1 = new Field("name","世界博览",Store.YES,Index.ANALYZED);
doc1.add(f1);
Document doc2 = new Document();
Field f2 = new Field("name","读者文摘",Store.YES,Index.ANALYZED);
doc2.add(f2);
try{
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.close();
}
catch(Exception e){
e.printStackTrace();
}
}
//search from data
public void Search(){
try{
IndexReader reader = IndexReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
Term t = new Term("name","文");
TermQuery q = new TermQuery(t);
ScoreDoc[] docs = searcher.search(q, 1).scoreDocs;
for(int i = 0;i<docs.length;i++){
String name = searcher.doc(docs[i].doc).get("name");
System.out.println(name);
}
//打印出 "读者文摘"
searcher.close();
}
catch(Exception e){
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
searchTest st = new searchTest();
st.Save();
st.Search();
}
}
编译运行,可以看到已经从插入的两个文档中搜寻出满足条件的结果了,还可以引用一个开源的中文分词包IKAnalyzer实现中文分词搜索,java和lucene都还在学习中,希望能用它做点东西出来。
更多资料参照博客园